Backtracking Algorithms Analysis
Backtracking Algorithms Analysis
ﻋﻘﺒﮕﺮد
Backtracking
ﻳﻚ درﺧﺖ ﻛﻪ در آن ﮔﺮه ﻫﺎ ﻃﺒﻖ ﺟﺴﺘﺠﻮي ﻋﻤﻘﻲ ﺷﻤﺎره ﮔﺬاري ﺷﺪه اﻧﺪ. ﺷﻜﻞ 1-5
if ( promising ( v ) )
if ( there is a solution at v )
write the solution ;
else
for ( each child u of v )
checknode ( u ) ;
}
٩ Design & Analysis of Algorithms
Hossein Momeni-Spring 2007
وزﻳﺮ-4 ﻣﺴﺎﻟﻪ
1, 1 1, 2
2, 1 2, 2 2, 3 2, 4 2, 1 2, 2 2, 3 2, 4
╳ ╳ ╳ ╳ ╳
3, 1 3, 2 3, 3 3, 4 3, 1 3, 2 3, 3 3, 4 3, 1
╳ ╳ ╳ ╳ ╳ ╳ ╳
4, 1 4, 2 4, 3 4, 4 4, 1 4, 2 4, 3
╳ ╳ ╳ ╳ ╳ ╳
١١ Design & Analysis of Algorithms
Hossein Momeni-Spring 2007
اﺟﺘﻨﺎب از ﺗﻮﻟﻴﺪ ﮔﺮه ﻫﺎي ﻏﻴﺮ اﻣﻴﺪ ﺑﺨﺶ
void expand ( node v )
{
node u ;
• ﺧﺮوﺟﻲ ﻫﺎ :ﺗﻤﺎﻣﻲ راه ﻫﺎي ﻣﻤﻜﻦ ﺑﺮاي ﻗﺮار دادن nوزﻳﺮ در ﻳﻚ ﺻﻔﺤﻪ
ﺷﻄﺮﻧﺞ n × nﺑﻪ ﻃﻮري ﻛﻪ ﻫﻴﭻ دو وزﻳﺮي ﻧﺘﻮاﻧﻨﺪ ﻳﻜﺪﻳﮕﺮ را ﺗﻬﺪﻳﺪ ﻛﻨﻨﺪ.
ﻫﺮ ﺧﺮوﺟﻲ ﺷﺎﻣﻞ آراﻳﻪ اي از اﻋﺪاد ﺻﺤﻴﺢ ﺑﻪ ﻧﺎم colاﺳﺖ ﻛﻪ از ﻳﻚ ﺗﺎ n
اﻧﺪﻳﺲ ﮔﺬاري ﺷﺪه اﺳﺖ و در آن ] col[iﺑﻴﺎﻧﮕﺮﺳﺘﻮﻧﻲ اﺳﺖ ﻛﻪ وزﻳﺮ
ردﻳﻒ iاُم در آن ﻗﺮار ﻣﻲ ﮔﻴﺮد.
ﻓﺮض ﻛﻨﻴﺪ
w1 = 5 w2 = 6 w3 = 10 w4 = 11 w5 = 16
از آﻧﺠﺎ ﻛﻪ
w1 + w2 + w3 = 21,
w1 + w5 = 21,
w3 + w4 = 21
:ﺟﻮاب ﻫﺎ ﺑﺮاﺑﺮﻧﺪ ﺑﺎ
{w1, w2, w3}, {w1, w5}, {w3, w4}
Start
w1 0
ﻳﻚ درﺧﺖ ﻓﻀﺎي ﺣﺎﻟﺖ ﺑﺮاي ﻧﻤﻮﻧﻪ اي از ﻣﺴﺎﻟﻪ ﺣﺎﺻﻞ ﺟﻤﻊ زﻳﺮ ﻣﺠﻤﻮﻋﻪ ﻫﺎ ﻛﻪ در آن .n = 3 ﺷﻜﻞ 7-5
2 0
w2 = 4 w2 0 w2 0
ﺷﻜﻞ 8-5ﻳﻚ درﺧﺖ ﻓﻀﺎي ﺣﺎﻟﺖ ﺑﺮاي ﻣﺴﺎﻟﻪ ﺣﺎﺻﻞ ﺟﻤﻊ زﻳﺮ ﻣﺠﻤﻮﻋﻪ ﻫﺎ ﺑﺮاي ﻧﻤﻮﻧﻪ ﻣﺜﺎل .3-5ﻣﻘﺎدﻳﺮ
ذﺧﻴﺮه ﺷﺪه در ﻫﺮ ﮔﺮه ﺑﺮاﺑﺮ ﻣﺠﻤﻮع وزن ﻫﺎ ﺗﺎ آن ﮔﺮه ﻣﻲ ﺑﺎﺷﺪ.
3 0
w2 = 4 4 0 4 0
x
درﺧﺖ ﻫﺮس ﺷﺪه ﻓﻀﺎي ﺣﺎﻟﺖ ﺗﻮﺳﻂ ﻋﻘﺒﮕﺮد در ﻣﺜﺎل .4-5ﻣﻘﺎدﻳﺮ ذﺧﻴﺮه ﺷﺪه در ﻫﺮ ﮔﺮه ﺑﺮاﺑﺮ ﺷﻜﻞ 9-5
ﻣﺠﻤﻮع وزن ﻫﺎ ﺗﺎ آن ﮔﺮه ﻣﻲ ﺑﺎﺷﺪ .ﺗﻨﻬﺎ ﺟﻮاب در ﮔﺮه ﺳﺎﻳﻪ ﺧﻮرده ﭘﻴﺪا ﺷﺪه اﺳﺖ .ﮔﺮه ﻫﺎي ﻏﻴﺮ اﻣﻴﺪ ﺑﺨﺶ ﺑﺎ
ﻋﻼﻣﺖ ﺿﺮب ﻣﺸﺨﺺ ﺷﺪه اﻧﺪ.
٢٣ Design & Analysis of Algorithms
Hossein Momeni-Spring 2007
اﻟﮕﻮرﻳﺘﻢ
• ﻣﺴﺎﻟﻪ :ﺗﻌﻴﻴﻦ ﻫﻤﻪ ﺗﺮﻛﻴﺒﺎت اﻋﺪاد ﺻﺤﻴﺢ ﻣﻮﺟﻮد در ﻳﻚ ﻣﺠﻤﻮﻋﻪ n
ﻋﻀﻮي ،ﺑﻪ ﻃﻮري ﻛﻪ ﻣﺠﻤﻮع آن ﻫﺎ ﻣﺴﺎوي ﻣﻘﺪار ﻣﻌﻴﻦ Wﺷﻮد.
• ورودي ﻫﺎ :ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ ،nآراﻳﻪ ﻣﺮﺗﺐ ) ﻏﻴﺮ ﻧﺰوﻟﻲ( از اﻋﺪاد ﺻﺤﻴﺢ
ﻣﺜﺒﺖ ﻛﻪ از ﻳﻚ ﺗﺎ nاﻧﺪﻳﺲ ﮔﺬاري ﺷﺪه اﺳﺖ .و ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ .W
• ﺧﺮوﺟﻲ ﻫﺎ :ﺗﻤﺎم ﺗﺮﻛﻴﺒﺎت اﻋﺪاد ﺻﺤﻴﺢ ورودي ﻛﻪ ﻣﺠﻤﻮﻋﺸﺎن ﺑﺮاﺑﺮ W
ﺑﺎﺷﺪ.
v4 v3
ﮔﺮاﻓﻲ ﻛﻪ ﺑﺎ دورﻧﮓ ﻗﺎﺑﻞ رﻧﮓ آﻣﻴﺰي ﻧﻤﻲ ﺑﺎﺷﺪ .ﺣﻞ ﻣﺴﺎﻟﻪ رﻧﮓ آﻣﻴﺰي ﺑﺎ 3رﻧﮓ ﺷﻜﻞ 10-5
v1 v2
v2
v3 v1
v4 v3
v4
v5
v5
ﻳﻚ ﻧﻘﺸﻪ )ﺳﻤﺖ راﺳﺖ( و ﻧﻤﺎﻳﺶ ﮔﺮاف ﻣﺴﻄﺢ ﻣﺮﺑﻮط ﺑﻪ آن )ﺳﻤﺖ ﭼﭗ( ﺷﻜﻞ 11-5
x
v3 1 2 3 v4 v3
x x
v4 1 2 3
x x
ﺷﻜﻞ 12-5ﺑﺨﺸﻲ از درﺧﺖ ﻫﺮس ﺷﺪه ﻓﻀﺎي ﺣﺎﻟﺖ ﻛﻪ ﺗﻮﺳﻂ ﻋﻘﺒﮕﺮد ﺑﺮاي رﻧﮓ آﻣﻴﺰي ﮔﺮاف ﺷﻜﻞ 10-5
ﺑﺎ 3رﻧﮓ ﺗﻮﻟﻴﺪ ﺷﺪه اﺳﺖ .اوﻟﻴﻦ راه ﺣﻞ در ﮔﺮه ﺳﺎﻳﻪ ﺧﻮرده ﻳﺎﻓﺖ ﺷﺪه اﺳﺖ .ﮔﺮه ﻫﺎي ﻏﻴﺮ اﻣﻴﺪ ﺑﺨﺶ ﺑﺎ ﻋﻼﻣﺖ
ﺿﺮب ﻧﺸﺎن داده ﺷﺪه اﻧﺪ.
٣٠ Design & Analysis of Algorithms
Hossein Momeni-Spring 2007
اﻟﮕﻮرﻳﺘﻢ
ﻣﺴﺎﻟﻪ :ﺗﻌﻴﻴﻦ ﻫﻤﻪ راه ﻫﺎﻳﻲ ﻛﻪ در آن رﺋﻮس ﻳﻚ ﮔﺮاف ﺑﺪون ﺟﻬﺖ را ﻣﻲ
ﺗﻮان ﺑﺎ ﺣﺪ اﻛﺜﺮ mرﻧﮓ ﺑﻪ ﮔﻮﻧﻪ اي رﻧﮓ آﻣﻴﺰي ﻧﻤﻮد ﻛﻪ ﻫﻴﭻ دو راس
ﻣﺠﺎوري ﻫﻢ رﻧﮓ ﻧﺒﺎﺷﻨﺪ.
ورودي ﻫﺎ :اﻋﺪاد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ nو mو ﮔﺮاف ﺑﺪون ﺟﻬﺖ ﺣﺎوي nراس.
ﮔﺮاف ﺗﻮﺳﻂ ﻣﺎﺗﺮﻳﺲ ﻣﺠﺎورﺗﻲ Wﻧﺸﺎن داده ﻣﻲ ﺷﻮد.
ﺧﺮوﺟﻲ ﻫﺎ :ﻫﻤﻪ رﻧﮓ آﻣﻴﺰي ﻫﺎي ﻣﻤﻜﻦ ﺑﺮاي ﮔﺮاف ورودي ﺑﺎ اﺳﺘﻔﺎده از
ﺣﺪاﻛﺜﺮ mرﻧﮓ ﺑﻪ ﻃﻮري ﻛﻪ ﻫﻴﭻ دو راس ﻣﺠﺎوري ﻫﻢ رﻧﮓ ﻧﺒﺎﺷﻨﺪ.
ﺧﺮوﺟﻲ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ رﻧﮓ آﻣﻴﺰي ﻳﻚ آراﻳﻪ ﺑﻪ ﻧﺎم vcolorﻣﻲ ﺑﺎﺷﻨﺪ ﻛﻪ
از ﻳﻚ ﺗﺎ nاﻧﺪﻳﺲ ﮔﺬاري ﺷﺪه اﺳﺖ و در آن ] vcolor[iﺑﻴﺎﻧﮕﺮ رﻧﮓ
ﻣﺮﺑﻮط ﺑﻪ راس iﻣﻲ ﺑﺎﺷﺪ.
٣١ Design & Analysis of Algorithms
Hossein Momeni-Spring 2007
اﻟﮕﻮرﻳﺘﻢ
void m_coloring ( index i )
{
int color ;
if ( promising ( i ))
if ( i == n)
cout << vcolor[1] through vcolor[n] ;
else
for ( color = 1; color <= m; color++) {
vcolor[i + 1] = color ;
m_coloring ( i + 1) ;
}
}
n +1
m −1
1+ m + m +K+ m =
2 n
m −1
)اﻟﻒ(
v5 v4
ﮔﺮاف )اﻟﻒ( داراي دور ﻫﺎﻣﻴﻠﺘﻮﻧﻲ ﻣﻲ ﺑﺎﺷﺪ .ﮔﺮاف )ب( ﻓﺎﻗﺪ دور ﻫﺎﻣﻴﻠﺘﻮﻧﻲ اﺳﺖ. ﺷﻜﻞ 13-5
• ورودي ﻫﺎ :ﻋﺪد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ nو ﮔﺮاف ﺑﺪون ﺟﻬﺖ داراي nراس
• ﺧﺮوﺟﻲ ﻫﺎ :ﺗﻤﺎم ﻣﺴﻴﺮﻫﺎي ﺑﺴﺘﻪ ﻛﻪ از ﻳﻚ راس ﻣﻔﺮوض آﻏﺎز ﺷﺪه ،ﻛﻠﻴﻪ
رﺋﻮس ﮔﺮاف را دﻗﻴﻘﺎ ﻳﻜﺒﺎر ﻣﻼﻗﺎت ﻣﻲ ﻛﻨﺪ و ﺑﻪ راس ﺷﺮوع ﺧﺘﻢ ﻣﻲ ﺷﻮد.
ﺧﺮوﺟﻲ ﻫﺮ ﻣﺴﻴﺮ ،آراﻳﻪ اي از اﻧﺪﻳﺲ ﻫﺎي vindexاﺳﺖ ﻛﻪ از ﺻﻔﺮ ﺗﺎ –n
1اﻧﺪﻳﺲ ﮔﺬاري ﺷﺪه اﻧﺪ و در آن ] vindex[iاﻧﺪﻳﺲ راس iاُم روي ﻣﺴﻴﺮ
اﺳﺖ .اﻧﺪﻳﺲ راش ﺷﺮوع vindex[0] ،اﺳﺖ.
if ( promising (i))
if ( i == n -1 )
cout << vindex [0] through vindex [n - 1] ;
else
for ( j = 2; j <= n; j++ ){
vindex[ i + 1] = j ;
hamilton (i + 1) ;
}
}
n −1 ( n − 1) n
−1
1 + (n − 1) + (n − 1) + K + (n − 1) =
2
n−2
k −1
pk
* ) bound = ( profit + ∑ p j ) + (W − totweight
j =i +1 wk
ﺑﻬﺮه ﺣﺎﺻﻞ از ﻇﺮﻓﻴﺖ ﺑﺎﻗﻴﻤﺎﻧﺪه ﺑﻬﺮه واﺣﺪ وزن
k-1ﻗﻄﻌﻪ ﻧﺨﺴﺖ ﺑﺮاي ﻗﻄﻌﻪ kاُم ﺑﺮاي ﻗﻄﻌﻪ kاُم
i pi wi pi / wi
1 $40 2 $20
2 $30 5 $6
3 $50 10 $5
4 $10 5 $2
maxprofit = 0
profit = 0
weight = 0
3−1
totoweight = weight + ∑w
j = 0 +1
j = 0+2+5 = 7
3−1
p3
bound = ( profit + ∑
j = 0 +1
p j ) + (W − totweight ) *
w3
$50
= $0 + $40 + $30 + (16 − 7) * = $115
10
. ﻣﻲ ﺑﺎﺷﺪmaxprofit = 0 ( و ﺣﺪش ﺑﺰرﮔﺘﺮ ازW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﻛﻤﺘﺮ از
($40, 2) (1, 1)
$40
2
$115
3−1
p3
bound = ( profit + ∑
j =1+1
p j ) + (W − totweight ) *
w3
$50
= $0 + $40 + $30 + (16 − 7) * = $115
10
. ﻣﻲ ﺑﺎﺷﺪmaxprofit = 40 ( و ﺣﺪش ﺑﺰرﮔﺘﺮ ازW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﻛﻤﺘﺮ از
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1)
($30, 5)
$70 profit =$40 + $30 = $70
7
$115 weight = 2 + 5 = 7
maxprofit = $70
3−1
totoweight = weight + ∑w
j = 2 +1
j =7
$50
bound = $70 + (16 − 7) * = $115
10
. ﻣﻲ ﺑﺎﺷﺪmaxprofit = 70 ( و ﺣﺪش ﺑﺰرﮔﺘﺮ ازW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﻛﻤﺘﺮ از
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1)
($30, 5)
$70 profit =$70 + $50 = $120
7
$115 weight = 7 + 10 = 17
Item 3 (3, 1)
maxprofit = $70
($50, 10) $120
17
( اﺳﺖ و ﺑﻨﺎﺑﺮاﻳﻦ ﺣﺪش را ﻣﺤﺎﺳﺒﻪ ﻧﻤﻲ ﻛﻨﻴﻢW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻧﻤﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﺑﻴﺸﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1)
($30, 5)
$70 profit =$70
7
$115 weight = 7
Item 3 (3, 1) (3, 2)
maxprofit = $70
($50, 10) $120 $70
17 7 5 −1
$80 bound = profit + ∑p
j =3+1
j = $70 + $10 = $80
x
ﻣﻲ ﺑﺎﺷﺪmaxprofit = $70 ( اﺳﺖ و ﺣﺪش ﺑﺰرﮔﺘﺮ ازW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﻛﻤﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1)
($30, 5)
$70
7
$115
Item 3 (3, 1) (3, 2)
($50, 10) $120 $70
17 7
$80
(4, 1)
x
Item 4 $80
($10, 5) 12
$80
x
ﻧﻤﻲ ﺑﺎﺷﺪmaxprofit = $80 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻧﻤﻲ ﺑﺎﺷﺪ زﻳﺮا ﺣﺪش ﺑﺰرﮔﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1)
($30, 5)
$70
7
$115
Item 3 (3, 1) (3, 2)
($50, 10) $120 $70
17 7
$80
(4, 1) (4, 2)
x
Item 4 $80 $70
($10, 5) 12 7
$80 $70
x x
ﻣﻲ ﺑﺎﺷﺪmaxprofit = $80 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا ﺣﺪش ﻛﻮﭼﻜﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1) (2, 2)
($30, 5)
$70 $40
7 2
$115 $98
Item 3 (3, 1) (3, 2)
($50, 10) $120 $70
17 7
$80
(4, 1) (4, 2)
x
Item 4 $80 $70
($10, 5) 12 7
$80 $70
x x
ﻣﻲ ﺑﺎﺷﺪmaxprofit = $80 (ﺣﺪش ﻛﻮﭼﻜﺘﺮ ازW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﻛﻤﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1) (2, 2)
($30, 5)
$70 $40
7 2
$115 $98
Item 3 (3, 1) (3, 2) (3, 3)
($50, 10) $120 $70 $90
17 7 12
$80 $98
(4, 1) (4, 2)
x
Item 4 $80 $70
($10, 5) 12 7
$80 $70
x x
ﻣﻲ ﺑﺎﺷﺪmaxprofit = $80 (ﺣﺪش ﻛﻮﭼﻜﺘﺮ ازW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻣﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﻛﻤﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1) (2, 2)
($30, 5)
$70 $40
7 2
$115 $98
Item 3 (3, 1) (3, 2) (3, 3)
($50, 10) $120 $70 $90
17 7 12
$80 $98
(4, 1) (4, 2) (4, 3)
x
Item 4 $80 $70 $100
($10, 5) 12 7 17
$80 $70
x x x
(و ﺑﻨﺎﺑﺮاﻳﻦ ﺣﺪش ﻣﺤﺎﺳﺒﻪ ﻧﻤﻲ ﺷﻮدW) 16 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻧﻤﻲ ﺑﺎﺷﺪ زﻳﺮا وزﻧﺶ ﺑﻴﺸﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1) (2, 2)
($30, 5)
$70 $40
7 2
$115 $98
Item 3 (3, 1) (3, 2) (3, 3)
($50, 10) $120 $70 $90
17 7 12
$80 $98
(4, 1) (4, 2) (4, 3) (4, 4)
x
Item 4 $80 $70 $100 $90
($10, 5) 12 7 17 12
$80 $70 $90
x x x x
ﻧﻤﻲ ﺑﺎﺷﺪmaxprofit = 90 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻧﻤﻲ ﺑﺎﺷﺪ زﻳﺮا ﺣﺪش ﺑﺰرﮔﺘﺮ از
Item 1
ﻣﺜﺎل $0
0
$115
($40, 2) (1, 1)
$40
2
$115
Item 2
(2, 1) (2, 2)
($30, 5)
$70 $40
7 2
$115 $98
Item 3 (3, 1) (3, 2) (3, 3) (3, 4)
($50, 10) $120 $70 $90 $40
17 7 12 2
$80 $98 $50
(4, 1) (4, 2) (4, 3) (4, 4)
x x
Item 4 $80 $70 $100 $90
($10, 5) 12 7 17 12
$80 $70 $90
x x x x
ﻧﻤﻲ ﺑﺎﺷﺪmaxprofit = 90 اﻳﻦ ﮔﺮه اﻣﻴﺪ ﺑﺨﺶ ﻧﻤﻲ ﺑﺎﺷﺪ زﻳﺮا ﺣﺪش ﺑﺰرﮔﺘﺮ از
• ورودي ﻫﺎ :اﻋﺪاد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ nو .Wآراﻳﻪ ﻫﺎي wو pﻛﻪ ﻫﺮ ﻛﺪام از 1ﺗﺎ n
اﻧﺪﻳﺲ ﮔﺬاري ﺷﺪه اﻧﺪ و ﺣﺎوي اﻋﺪاد ﺻﺤﻴﺢ و ﻣﺜﺒﺘﻲ ﻣﻲ ﺑﺎﺷﻨﺪ ﻛﻪ ﻛﻪ ﺑﺮ اﺳﺎس ﻣﻘﺎدﻳﺮ
pi / wiﺑﻪ ﺻﻮرت ﻏﻴﺮ ﻧﺰوﻟﻲ ﻣﺮﺗﺐ ﺷﺪه اﻧﺪ.
• ﺧﺮوﺟﻲ ﻫﺎ :آراﻳﻪ bestsetﻛﻪ از 1ﺗﺎ nاﻧﺪﻳﺲ ﮔﺬاري ﺷﺪه اﺳﺖ و در آن ﻣﻘﺪار
] bestset[iدر ﺻﻮرﺗﻲ ” “yesﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﻗﻄﻌﻪ iاُم در ﻣﺠﻤﻮﻋﻪ ﺑﻬﻴﻨﻪ ﮔﻨﺠﺎﻧﺪه ﺷﻮد.
ﻋﺪد ﺻﺤﻴﺢ maxprofitﻛﻪ ارزش ﺑﻴﺸﻴﻨﻪ را ﻧﺸﺎن ﻣﻲ دﻫﺪ.
if ( weight >= W)
return false ;
else {
j=i+1;
bound = profit ;
totweight = weight ;
while ( j <= n && totweight + w [j] <= W) {
totweight = totweight + w [j] ;
bound = bound + p [j];
j++;
}
k = j;
if ( k <= n)
bound = bound + ( W – totweight * p [k] / w [k] ;
return bound > maxprofit ;
}
}
۶٠ Design & Analysis of Algorithms
Hossein Momeni-Spring 2007
ﭘﻴﭽﻴﺪﮔﻲ زﻣﺎﻧﻲ
2n+1-1 • ﺗﻌﺪاد ﮔﺮه ﻫﺎي درﺧﺖ ﻓﻀﺎي ﺣﺎﻟﺖ
• ﻣﺜﺎل از ﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ
pi = 1 wi = 1 1 ≤ i ≤ n – 1
pn = n wn = n