- 浏览: 196849 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CWinty%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml">
<link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CWinty%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso">
<link rel="OLE-Object-Data" href="file:///C:%5CDOCUME%7E1%5CWinty%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_oledata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:"MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;
mso-font-alt:"MS 明朝";
mso-font-charset:128;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;
mso-font-charset:128;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:1804762257;
mso-list-type:hybrid;
mso-list-template-ids:-2029857690 1545267864 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:■;
mso-level-tab-stop:18.0pt;
mso-level-number-position:left;
margin-left:18.0pt;
text-indent:-18.0pt;
font-family:宋体;
mso-bidi-font-family:"Times New Roman";}
@list l1
{mso-list-id:2131394409;
mso-list-type:hybrid;
mso-list-template-ids:1924542050 321178628 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
{mso-level-text:"%1\)";
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
</style>
<![endif]-->
二、嵌套箱问题
2、一个d 维箱(x1,x2,...,xn)嵌入另一个d 维箱(y1,y2,...,yn)是指存在1,2,…,d 的一个排列π,使得xπ(1)<y1 ,xπ(2) <y2,
... , xπ(d)<yd 。
<!--[if !supportLists]-->1) <!--[endif]-->证明上述箱嵌套关系具有传递性;
<!--[if !supportLists]-->2) <!--[endif]-->试设计并实现一个贪心算法,用于确定一个d维箱是否可嵌入另一个d维箱;
<!--[if !supportLists]-->3) <!--[endif]-->给定由n 个d 维箱组成的集合{ B1,B2,B3,...,Bn},试设计并实现一个贪心算法找出这n 个d维箱中的一个最长嵌套箱序列,并用n和d
描述算法的计算时间复杂性。
1) 箱嵌套关系的传递性
证明:
设有3个d维箱B1(x1 , x2
, ... , xd),B2 (y1 , y2 , ..., yd),B3(z1 , z2 , ..., zd),B1可嵌入B2,B2可嵌入B3。
B1可嵌入B2,则存在排列π使得:
xπ(1) < y1,xπ(2) < y2 ,...,xπ(d) < yd ——<!--[if supportFields]><span lang=EN-US
style='font-size:16.0pt'> eq
\o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>1</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->1<!--[endif]--><!--[if supportFields]><![endif]-->
B2可嵌入B3,则存在排列θ使得:
yθ(1) < z1,yθ(2) < z2 ,...,yθ(d) < zd ——<!--[if supportFields]><span lang=EN-US
style='font-size:16.0pt'> eq
\o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>2</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->2<!--[endif]--><!--[if supportFields]><![endif]-->
由<!--[if supportFields]><span
lang=EN-US style='font-size:14.0pt;font-family:宋体'> eq \o\ac(</span><span style='font-size:14.0pt;font-family:
宋体'>○<span lang=EN-US>,<span style='position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>1</span>)</span></span><![endif]--><!--[if !supportFields]-->1<!--[endif]--><!--[if supportFields]><![endif]-->式可得:
xθ(π(1)) < yθ(1),xθ(π(2)) < yθ(2) ,...,xθ(π(d)) < yθ(d) ——<!--[if supportFields]><span lang=EN-US
style='font-size:16.0pt'> eq
\o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>3</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->3<!--[endif]--><!--[if supportFields]><![endif]-->
由<!--[if supportFields]><span lang=EN-US
style='font-size:14.0pt;font-family:宋体'>
eq \o\ac(</span><span style="font-size:14.0pt;font-family:宋体">○<span
lang=EN-US>,<span style="position:relative;top:-2.0pt;mso-text-raise:2.0pt">2</span>)</span></span><![endif]--><!--[if !supportFields]-->2<!--[endif]--><!--[if supportFields]><![endif]--><!--[if supportFields]><span lang=EN-US
style='font-size:14.0pt;font-family:宋体'>
eq \o\ac(</span><span style="font-size:14.0pt;font-family:宋体">○<span
lang=EN-US>,<span style="position:relative;top:-2.0pt;mso-text-raise:2.0pt">3</span>)</span></span><![endif]--><!--[if !supportFields]-->3<!--[endif]--><!--[if supportFields]><![endif]-->可得:存在排列λ = θπ使得:
xλ(1) < z1,xλ(2) < z2 ,...,xλ(d) < zd
根据d维箱的定义可得,B1可嵌入B3。因此,嵌套箱关系具有传递性。
2) d维箱的嵌套关系
<!--[if !supportLists]-->■
<!--[endif]-->贪心选择性质:
对于d维箱X(x1 , x2 , ... , xd),Y (y1 , y2 , ..., yd),排列 π、θ是分别使X、Y非递减有序的排列,有如下结论:X→Y(表示X可嵌入Y)的充要条件是,对任意1≤i≤d有xπ(i) < yθ(i)。
证明:
a.充分性:
当对任意1≤i≤d有xπ(i) < yθ(i)时,令λ = πθ-1,那么
xλ(i) = xπ(θ-1 (i)) < yθ(θ-1 (i)) = yi ,即存在一个排列λ使得对于任意1≤i≤d,xλ(i) < yi ,所以X→Y。
b.必要性:
用数学归纳法证明。
当维数为1时,X→Y 可得 x1< y1 ,那么xπ(1) < yθ(1)成立。
假设维数为d时,结论成立,即: 当X→Y时,对于任意1≤i≤d,有xπ(i) < yθ(i)。那么当维数为d + 1时,对于任意1≤i≤d+1,X→Y,则存在λ使得:
xλ(1) < y1, xλ(2) < y2,
...,xλ(d) <yd, xλ(d+1)
<yd+1 ——<!--[if supportFields]><span
lang=EN-US style='font-size:16.0pt'>
eq \o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>1</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->1<!--[endif]--><!--[if supportFields]><![endif]-->
先观察<!--[if supportFields]><span
lang=EN-US style='font-size:14.0pt'>
eq \o\ac(</span><span style='font-size:14.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:14.0pt'>,<span style='position:relative;top:-2.0pt;
mso-text-raise:2.0pt'>1</span>)</span><![endif]--><!--[if !supportFields]-->1<!--[endif]--><!--[if supportFields]><![endif]-->式前d项, xλ(1) < y1, xλ(2)
< y2, ...,xλ(d) <yd 。
由假设可知,对任意1≤i≤d,有存在排列π、θ使得xπ(i) < yθ(i),
即:
xπ(1)≤xπ(2)≤ ...≤xπ(d) ——<!--[if supportFields]><span
lang=EN-US style='font-size:16.0pt'>
eq \o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>2</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->2<!--[endif]--><!--[if supportFields]><![endif]-->
yθ(1)≤yθ(2)≤ ...≤yθ(d) ——<!--[if supportFields]><span
lang=EN-US style='font-size:16.0pt'>
eq \o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>3</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->3<!--[endif]--><!--[if supportFields]><![endif]-->
xπ(1) < yθ(1),xπ(2) < yθ(2),...,xπ(d) < yθ(d) ——<!--[if supportFields]><span
lang=EN-US style='font-size:16.0pt'>
eq \o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>4</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->4<!--[endif]--><!--[if supportFields]><![endif]-->
此时,π、θ只对<!--[if supportFields]><span
lang=EN-US style='font-size:16.0pt'>
eq \o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>1</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->1<!--[endif]--><!--[if supportFields]><![endif]-->式前d项进行排列,并不包含xλ(d+1)和
yd+1。可以将xλ(d+1)
按大小顺序插入到<!--[if supportFields]><span
lang=EN-US style='font-size:14.0pt'>
eq \o\ac(</span><span style='font-size:14.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:14.0pt'>,<span style='position:relative;top:-2.0pt;
mso-text-raise:2.0pt'>2</span>)</span><![endif]--><!--[if !supportFields]-->2<!--[endif]--><!--[if supportFields]><![endif]-->式(设插入位置为j),从而有新的排列π’使得xi(1≤i≤d+1) 非递减有序。
同理,也有θ’使得yd+1按大小顺序插入到<!--[if supportFields]><span lang=EN-US
style='font-size:16.0pt'> eq
\o\ac(</span><span style='font-size:16.0pt;font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>○</span><span
lang=EN-US style='font-size:16.0pt'>,</span><span lang=EN-US style='font-size:
11.0pt;mso-bidi-font-size:16.0pt;position:relative;top:-2.0pt;mso-text-raise:
2.0pt'>3</span><span lang=EN-US style="font-size:16.0pt">)</span><![endif]--><!--[if !supportFields]-->3<!--[endif]--><!--[if supportFields]><![endif]-->式后(设插入位置为k),yi(1≤i≤d+1) 非递减有序。
因为xλ(d+1)
<yd+1,易知j≤k。
当j = k时,因为xm 、ym (1≤m≤d+1)的对应位置都没有变,显然xπ’(i) < yθ’(i) (1≤i≤d+1),所证结论成立。
当j<k时,x1<y1 ,x2<y2,...,xj<xj+1<yj ,xj+1<xj+2< yj+1,...,xk-1<xk< yk -1,xk<yk -1 < yk,xk+1<y k+1,...,xd+1< y d+1。
即, 对任意1≤i≤d+1 xπ’(i) < yθ’(i),所证结论成立。
命题得证。
<!--[if !supportLists]-->■
<!--[endif]-->算法实现
由上面所得结论,对两个d维箱进行排序后,只要判断排序后两个d维箱的嵌套关系就可以得出结果。
-----------------------------------------------------------------------------------------
求两个箱子的嵌套关系的伪代码:
返回1表示X嵌套Y(即Y→X)
返回–1表示Y嵌套X(即X→Y)
返回0表示X和Y之间无嵌套关系
NEST(X , Y , d):
Sort(X) ▹对数组所表示的d维箱X、Y进行排序
Sort(Y)
if X[0] > Y[0]
then for i ← 1 to d – 1
do if X[i] <=Y[i]
then
return 0
return 1
else for i ← 0 to d – 1
do if X[i] >=Y[i]
then
return 0
return –1
--------------------------------------------------------------------------------------
<!--[if !supportLists]-->■
<!--[endif]-->时间复杂度分析
NEST()的主要时间消耗在于排序,使用快速排序时,NEST()的时间复杂度为:
O(d lgd)。
<!--[if !supportLists]-->■
<!--[endif]-->算法测试
对应的算法实现Java源文件为NestedBox.java
输入:X(1,6,2,5,9) ,Y(7,4,8,19,32)
输出: Y嵌套X
3) 最长嵌套箱序列
<!--[if !supportLists]-->■
<!--[endif]-->算法思想
将n个d维箱之间的关系用一棵树来表示,其中可嵌套其它箱子的箱子为父节点,被嵌套的箱子作为孩子节点,无嵌套关系的节点为兄弟节点。这样就一个d维箱的深度值就是在这棵树中的深度。
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:30.75pt;
height:15.75pt' o:ole="">
<v:imagedata src="file:///C:\DOCUME~1\Winty\LOCALS~1\Temp\msohtml1\01\clip_image001.wmz"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><!--[if gte mso 9]><xml>
<o:OLEObject Type="Embed" ProgID="Equation.3" ShapeID="_x0000_i1025"
DrawAspect="Content" ObjectID="_1283445464">
</o:OLEObject>
</xml><![endif]-->深度值的递归定义如下:
<!--[if gte vml 1]><v:shape id="_x0000_i1026"
type="#_x0000_t75" style='width:387.75pt;height:38.25pt' o:ole="">
<v:imagedata src="file:///C:\DOCUME~1\Winty\LOCALS~1\Temp\msohtml1\01\clip_image003.wmz"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><!--[if gte mso 9]><xml>
<o:OLEObject Type="Embed" ProgID="Equation.3" ShapeID="_x0000_i1026"
DrawAspect="Content" ObjectID="_1283445465">
</o:OLEObject>
</xml><![endif]--> 只要找出深度最大的节点,然后递归地输出它嵌套的箱子,结果就是最长嵌套箱序列。
<!--[if !supportLists]-->■
<!--[endif]-->贪心选择性质
假设最长d维箱序列的一个最优解是B1 , B2 , …,Bk (k>1),其对应的深度值分别为H1,
H2 , …, Hk (H1 > H2…> Hk)。
a.若H1为最大的深度值,则说明问题的最优解以一个贪心选择开始。
b.若H1不是最大的深度值,不妨设H1<Hj
(1<j≤k)。但B1嵌套Bj 可得H1
>Hj。与假设矛盾。所以H1为最大的深度值,这说明问题的最优解以一个贪心选择开始。
<!--[if !supportLists]-->■
<!--[endif]-->最优子结构性质
设嵌套序列B1
, B2 , …,Bk (k>1)是问题的一个最优解,各个箱子的深度值为H1, H2 , …, Hk
(H1 > H2…> Hk)。由贪心选择性质可知H1为最大深度值,其余箱子组成的序列B2 ,B3 , …,Bk (k>1)是在所有箱子中去掉B1
及与其具有相同深度值的箱子后,在剩下的箱子中查找最长嵌套箱序列的一个最优解。因此,最长嵌套箱序列问题具有最优子结构性质。
<!--[if !supportLists]-->■
<!--[endif]-->算法实现
--------------------------------------------------------------------------------------
求最长嵌套箱序列的伪代码:
B为存放n个d维箱的二维数组
Longest(B , n , d):
▹A 存放各箱子嵌套关系的二维数组,下标从0开始,列数为n+1.
▹A[i,n]表示箱子i的深度值
▹初始化A数组
for
i ← 0 to n
do
A[i , n] ← 0
▹计算嵌套关系
for i ← 0 to n – 1
do
for j ← i+1 to n – 1
do
A[i , j] ← nest(B[i] , B[j] , d)
A[j , i] ← – A[i , j]
▹递归地修改嵌套的深度值
for i ← 0 to n – 1
do
for j ← 0 to n – 1
if A[i , j] = – 1
then addHeight(A , n , i , j)
▹查找深度值最大的箱子作为首嵌套箱
maxBoxIndex ← findMax()
▹输出最长嵌套箱序列
trace(maxBoxIndex)
--------------------------------------------------------------------------------------
递归地修改嵌套箱的深度值
addHeight(A
, n , i , j):
if A[i , n] = A[j , n]
then A[j , n] ← A[j , n]
+ 1
for k ← 0 to n – 1
do if A[j , k] = – 1
then addHeight(A , n , j , k)
--------------------------------------------------------------------------------------
查找深度值最大的箱子作为首嵌套箱
findMax(A , n):
max ← A[0 , n]
maxBoxIndex ← 0
for
i
← 0 to n – 1
do if A[i , n] > max
then max ← A[i , n]
maxBoxIndex ← i
return
maxBoxIndex
--------------------------------------------------------------------------------------
根据深度值最大的箱子,输出最长嵌套箱序列
trace(n , maxIndex):
while
A[max][n] > 0
do seq ← (max+1) + “→” + seq
m ← 0
for i ← 0 to n – 1
do if A[max , i] = 1 and A[i , n] >=m
then m ← A[i , n]
temp ← i
max ← temp
seq ← (max+1) + “→
相关推荐
行业分类-设备装置-纸箱套箱装置.zip
包括:最小覆盖问题,最大边权最小生成树,字符串频率,字典问题,装箱问题,整数字典,旋转变换问题,图的2着色,同构二叉树,条形图,套汇问题,素数问题,双回路,石子合并,嵌套箱,前缀二叉树,离线最小值,...
行业文档-设计装置-轻质高强度混凝土预应力装配式套箱
TBH-522型短波发射机自动调谐套箱FPGA逻辑部分设计.pdf
套箱封箱贴标签一体化包装线sw12可编辑非常好的设计图纸.zip
套箱安全技术规定.pdf
套箱封箱贴标签一体化包装线sw12可编辑_零件图_机械工程图_机械三维3D设计图打包下载.zip
五四湖钢套箱施工方案.pdf
为了研究桩基和承台套箱设计与施工的关键问题,通过计算桩基腐蚀余量和不同承台结构情况下的波浪作用力,研究了设计与施工过程中大型桥梁的受力荷载、施工难道、基础结构的耐久性和安全性,并对桥梁基础的结构形式进行...
大榭二桥主桥承台套箱施工关键技术.docx
套箱封箱贴标签一体化包装线sw12可编辑.rar
22主墩套箱、承台、墩身施工作业指导书.pdf
方法 利用ANSYS/LS-DYNA软件建立船舶撞击钢套箱有限元模型,分析其碰撞过程中的损伤变形、能量变化和位移响应。结果 碰撞过程基本满足能量守恒,船舶的总动能转化为钢板变形能、角钢变形能、碰撞摩擦能以及沙漏能。...
首先采用非线性有限元方法模拟1 000吨级三峡标准散货船与钢套箱式桥梁防船撞装置的碰撞过程,分析了防撞钢套箱艏尖舱在不同的斜边角和船舶碰撞速度下的能量吸收特性以及传递至桥墩的碰撞力特性,得到的结果可为防撞...
还有一种是中控台上的CD主机只能吸入一张碟片,同时在车的其他位置(一般在手 套箱、后备箱或副驾驶座椅底下)还有一个CD盒,可以放多张CD,这是所谓的6+1。 " " DVD播放器 DVD播放器是安装在汽车内为车内乘坐人员...