Professional Documents
Culture Documents
4 Tree
4 Tree
• ﭘﺪر ) (parentو ﻓﺮزﻧﺪ ) :(childاﮔﺮ در درﺧﺖ ﻣﺴﻴﺮي ﺑﻪ ﻃﻮل ﻳﻚ از ﺑﺎﺷﺪ )ﮔﮔﺮه ااي
ﺻﻔﺮ ﺎﺷ
ﺑﺮاﺑﺮ ﺎﺑﺎ ﻔ
ﺧﺎرﺟﻲ( :ﮔﮔﺮه ااي ﻛﻛﻪ درﺟﻪ آآن ا • ﮔﮔﺮه گ
ﺑﺮگ )ﮔﮔﺮه ﺧﺎ
ﮔﺮه aﺑﻪ ﮔﺮه bوﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ،در اﻳﻦ ﺻﻮرت aرا ﭘﺪر bو bرا ﻛﻪ ﺗﻌﺪاد ﻓﺮزﻧﺪاﻧﺶ ﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﺑﺎﺷﺪ(.
ﻓﺮزﻧﺪ aﻣﻲ ﮔﮔﻮﻳﻴﻢ.
ﻓ زﻧﺪ
ﺻﻔﺮ ﺎﺷﺪ
ﺑﺎﺷﺪ ﺑﺰرﮔﺘﺮ از ﻔ
ﺟﻪ آن ﺰ ﮔﺘ
ﮔﺮه اي ﻛﻪ ددرﺟﻪ
داﺧﻠﻲ( :ﮔ ه
ﮔﺮه داﺧﻠ
ﻏﻴﺮﺑﺮگ )ﮔ ه
ﮔﺮه ﻏ گ• ﮔه
• ﮔﺮه ﻫﺎي ) siblingﻫﻤﺰاد ،ﻫﻢ ﻧﻴﺎ( :ﮔﺮه ﻫﺎﻳﻲ ﻛﻪ ﭘﺪر آﻧﻬﺎ ﻳﻜﺴﺎن ﺑﺎﺷﺪ. )ﮔﺮه اي ﻛﻪ ﺣﺪاﻗﻞ ﻳﻚ ﻓﺮزﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ(.
DS course- N. Razavi ٢٠٠٧ - ۵ DS course- N. Razavi ٢٠٠٧ - ۶
level 1
• درﺧﺖ -kﺗﺎﻳﻲ :درﺧﺘﻲ اﺳﺖ ﻛﻪ در آن درﺟﻪ ﻫﺮ ﮔﺮه ﺣﺪاﻛﺜﺮ
ﺑﺮاﺑﺮ ﺎﺑﺎ kﺎﺷ
ﺑﺎﺷﺪ. ا
level 2
ارﺗﻔﺎع ﮔﺮه :ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ﺣﺪاﻛﺜﺮ ﻃﻮل ﻳﻚ ﻣﺴﻴﺮ از آن ﮔﺮه ﺗﺎ • • ﻗﻀﻴﻪ :در ﻫﺮ درﺧﺖ -kﺗﺎﻳﻲ دارﻳﻢ:
ﻳﻜﻲ از ﺑﺮگ ﻫﺎي اوﻻد.
n0 = (k – 1) nk + (k – 2) nk-1 + … + 2n3 + n2 + 1
B = n – 1 = n0 + n1 + … + nk - 1
B = 0 × n0 + 1 × n1 + 2 × n2 … + k × nk
ارﺗﻔﺎع درﺧﺖ :ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ارﺗﻔﺎع رﻳﺸﻪ )ﺣﺪاﻛﺜﺮ ﻃﻮل ﻳﻚ • n0 = (k – 1) nk + (k – 2) nk-1 + … + 2n3 + n2 + 1
ﻣﺴﻴﺮ از رﻳﺸﻪ ﺗﺎ ﻳﻜﻲ از ﺑﺮگ ﻫﺎي درﺧﺖ(
ﻣﺴﺘﻘﻞ از ﺗﻌﺪاد ﮔ ه
ﮔﺮه ﺑﺮگ ﻫﺎ ﻣ ﺘﻘﻞ درﺧﺖ -kﺗﺎﻳ
ﺗﺎﻳﻲ ﺗﻌﺪاد ﺑ گ ﻧﺘﻴﺠﻪ :ددر ﻫﻫﺮ د ﺧﺖ
ﻧﺘ ﺠﻪ
ﻫﺎي ﺗﻚ ﻓﺮزﻧﺪي ﻣﻲ ﺑﺎﺷﺪ.
DS course- N. Razavi ٢٠٠٧ - ٧ DS course- N. Razavi ٢٠٠٧ - ٨
ﺗﻌﺎرﻳﻒ ﭘﺎﻳﻪ اي ﺗﻌﺎرﻳﻒ ﭘﺎﻳﻪ اي
• درﺧﺖ -kﺗﺎﻳﻲ ﻛﺎﻣﻞ :درﺧﺘﻲ اﺳﺖ ﻛﻪ در آن درﺟﻪ ﻫﺮ ﮔﺮه ﻳﺎ • درﺧﺖ ﻣﺘﻮازن :درﺧﺘﻲ اﺳﺖ ﻛﻪ در آن اﺧﺘﻼف ﺳﻄﺢ ﺑﺮگ ﻫﺎ
ﺑﺎﺷﺪ.
ﺻﻔﺮ ﺎﺷ ﺑﺮاﺑﺮ ﺎﺑﺎ kو ﺎﻳﺎ ا
ﺑﺮاﺑﺮ ﺎﺑﺎ ﻔ ا ﺑﺎﺷﺪ.
ﻳﻚ ﺎﺷ
ﺑﺮاﺑﺮ ﺎﺑﺎ ﻚ
ﺣﺪﻛﺜﺮ ا
ﻛ
• ﻗﻀﻴﻪ :در ﻫﺮ درﺧﺖ -kﺗﺎﻳﻲ ﻛﺎﻣﻞ دارﻳﻢ:
n0 = (k – 1) nk + 1
B = n – 1 = n0 + nk - 1
B = 0 × n0 + k × nk
n0 = (k – 1) nk + 1
DS course- N. Razavi ٢٠٠٧ - ٩ DS course- N. Razavi - ٢٠٠٧ ١٠
b c d e
T1 f g i j l
T1 T2
L Tk T4
h k
b c d e b c d e
T1 f g i j l T1 f g i j l
T4 T4
h k h k
T2 T3 T2 T3
Inorder: b a f c h g k i d j l e Postorder: b f h g c k i j d l e a
T1 T2 T3 T4 T1 T2 T3 T4
a
5 5 a 9 NULL
ﺑﺮادرر رراﺳﺖ
ﺮﻳﻦ ﺑﺮ
ﻧﺰدﻳﻚ ﺗﺮﻳﻦ
رس ﺰ ﻳ
ذﺧﻴﺮه آدرس
ي ﻴﺮ ﺑﺮاي – ﻳﻳﻜﻲ
ﻲ ﺑﺮ 6 k NULL NULL
M
h k h k MAX
cellspace
DS course- N. Razavi ٢٠٠٧ - ٢٣ DS course- N. Razavi ٢٠٠٧ - ٢۴
LMC RSB ﭘﻴﺎده ﺳﺎزي
LMC-RSB LMC RSB ﭘﻴﺎده ﺳﺎزي ﻋﻤﻠﻴﺎت
LMC-RSB
procedure MAKENULL (var T: TREE);
const
MAX = …;
NULL = 0;
0
begin
type
TREE = 0 .. MAX;
T := NULL
node = TREE;
end;;
var
cellspace : array [1..MAX] of record
label: labeltype; T (n) ∈ Θ(1)
LMC, RSB: node
end;
d
function CREATE2 (r: labeltype; T1, T2: TREE): TREE; function SIZE (n: node): integer;
var var
count: integer;
i
T: TREE; c: node;
begin begin
MYNEW (T); count := 1;
cellspace [T].label = r; c := LEFT-MOST-CHILD (n, T); )
while ( c <> NULL ) do begin
cellspace [T].LMC = T1; count ::= count + SIZE (c);
cellspace [T].RSB = NULL; c := RIGHT-SIBLING (c, T)
cellspace [T1].RSB = T2; end;
return ( T ) return
t (count)
end; end;
T ( n ) ∈ Θ( n )
DS course- N. Razavi - ٢٠٠٧ ٣١ DS course- N. Razavi - ٢٠٠٧ ٣٢
درﺧﺖ LMC RSB
LMC-RSB ﻚ ﺧﺖ ارﺗﻔﺎع ﻳﻚ
ﻣﺤﺎﺳﺒﻪ ا ﺗﻔﺎ
ﻣﺜﺎل :ﺎ
ﺜﺎل ﺗﻤﺮﻳﻦ
;function HEIGHT (n: node): integer
var
• ﺗﺎﺑﻌﻲ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺗﻌﺪاد ﺑﺮگ ﻫﺎي ﻳﻚ درﺧﺖ LMC-RSB
;h: integer
i ﺑﻨﻮﻳﺴﻴﺪ.
;c: node
begin
;h := 0
;)c := LEFT-MOST-CHILD (n, T )
;)if ( c = NULL ) then return (0
while ( c <> NULL ) do begin
;))h := MAXIMUM (h, HEIGHT (c
)c := RIGHT-SIBLING (c, T
;end
d
)return (h + 1
;end
DS course- N. Razavi - ٢٠٠٧ ٣٣ DS course- N. Razavi - ٢٠٠٧ ٣۴
ﻲ ﺷﻮﻧﺪ.
درﺧﺖ ﻫﺎ ،زﻳﺮدرﺧﺖ ﻫﺎي ﭼﭗ و راﺳﺖ ﻧﺎﻣﻴﺪه ﻣﻲ 1 21
2 22
0 23
• ﺗﻔﺎوت ﻫﺎي درﺧﺖ دودوﻳﻲ ﺑﺎ درﺧﺖ ﻋﻤﻮﻣﻲ:
• ﺣﺪاﻛﺜﺮ ﺗﻌﺪاد ﮔﺮه ﻫﺎ در ﻳﻚ درﺧﺖ دودوﻳﻲ ﺑﺎ ارﺗﻔﺎع hﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ 2h + 1 - 1 :
ﺗﻬﻲ ﺑﺎﺷﺪ.
دودوﻳﻲ ﻣﻣﻲ ﺗﻮاﻧﺪ ﺗﻬ – د ﺧﺖ
درﺧﺖ دودوﻳ h
2 h +1 − 1
= n = ∑ 2i = 20 + 21 + L + 2 h = 2 h +1 − 1
– در درﺧﺖ دودوﻳﻲ ﺗﺮﺗﻴﺐ ﻓﺮزﻧﺪان اﻫﻤﻴﺖ دارد. i =0 2 −1
Tl Tr
• راﺑﻄﻪ ﺑﻴﻦ ﺗﻌﺪاد ﺑﺮگ ﻫﺎ و ﺗﻌﺪاد ﮔﺮه ﻫﺎي دو ﻓﺮزﻧﺪي:
n0 = n2 + 1
DS course- N. Razavi - ٢٠٠٧ ٣۵ DS course- N. Razavi ٢٠٠٧ - ٣۶
دودوﻳﻲ ﺑﻪ وﺳﻴﻠﻪ آراﻳﻪ
ﻧﻤﺎﻳﺶ درﺧﺖ دودوﻳ دودوﻳﻲ ﺑﻪ وﺳﻴﻠﻪ آراﻳﻪ
ﻧﻤﺎﻳﺶ درﺧﺖ دودوﻳ
1
1 a
2 3
2 b c3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
آراﻳﻪ
وﺳﻴﻠﻪ آ ا
ﻠ ﺧﺖ دودوﻳﻲ ﺑﻪ
ﺳﺎزي درﺧﺖ
ﭘﻴﺎده ﺎز
ﻣﻌﺎﻳﺐ ﺎ
ﺎ ﻴﻠﻪ اﺷﺎره ﮔﺮ
دودوﻳﻲ ﺑﻪ ووﺳﻴﻠﻪ
ﺳﺎزي درﺧﺖ دودوﻳ
ﭘﻴﺎده ﺎزي
• اﻳﻦ روش ﻓﻘﻂ ﺑﺮاي درﺧﺖ ﻫﺎي دودوﻳﻲ ﭘﺮ و ﺗﻘﺮﻳﺒﺎً ﭘﺮ ﻣﻨﺎﺳﺐ type
ارﺗﻔﺎع hﺑﻪ
درﺧﺖ ﻣﻮرب ﺑﻪ ا ﻔﺎ ﻳﻚ ﺧ ﺣﺎﻟﺖ ،ﻚااﺳﺖ .در ﺑﺪﺗﺮﻳﻦ ﺎﻟ ;TREE = ^nodetype
ﻦ ﺗﻌﺪاد ﻓﻘﻂ h + 1ﺧﺎﻧﻪ 2h+1-1ﺧﺎﻧﻪ ﻧﻴﺎزز ر
دارد ﻛﻪ ازز اﻳﻦ
;node = TREE
اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد و ﺑﻘﻴﻪ ﺧﺎل ﻣﻲ ﻣﺎﻧﻨﺪ. left label right
nodetype
yp = record
;label: labeltype
• در اﻳﻦ روش ،درج و ﺣﺬف ﮔﺮه ﻫﺎ ﻧﻴﺎز ﺑﻪ ﺟﺎﺑﺠﺎﻳ
ﺟﺎﺑﺠﺎﻳﻲ ﺑﻘﻴﻪ ﮔﺮه ﻫﺎ nodetype
دارد ﻛﻪ ﺑﺎﻋﺚ ﻛﻨﺪي ﻋﻤﻞ درج و ﺣﺬف ﻣﻲ ﮔﺮدد. left, right: node
;end
d
DS course- N. Razavi ٢٠٠٧ - ٣٩ DS course- N. Razavi - ٢٠٠٧ ۴٠
دودوﻳﻲ
روش ﻫﺎي ﭘﻴﻤﺎﻳﺶ درﺧﺖ دودوﻳ دودوﻳﻲ ﺑﻪ روش ﭘﻴﺶ ﺗﺮﺗﻴﺐ
ﭘﻴﺎﻳﺶ درﺧﺖ دودوﻳ
r procedure PRE-ORDER (n: node);
b i
begin
if ( n <> nil ) then begin
Tl Tr write (n^.label);
PRE-ORDER (n^.left);
Preorder (T): r, Pre (Tl), Pre (Tr)
PRE-ORDER (n^.right)
Inorder (T): In (Tl), r, In (Tr) end
Postorder (T): Post (Tl), Post (Tr), r
end;
DS course- N. Razavi - ٢٠٠٧ ۴١ DS course- N. Razavi ٢٠٠٧ - ۴٢
c e
f, g, h
g, f, h
DS course- N. Razavi - ٢٠٠٧ ۴٩ DS course- N. Razavi ٢٠٠٧ - ۵٠
ﻫﺎي آآن
ﭘﻴﻤﺎﻳﺶ ﺎ
ﻚ ﺎﺶ ﺧﺖ دودوﻳﻲ ﺑﻪ ﻛﻛﻤﻚ
ﻣﺴﺄﻟﻪ :رﺳﻢ درﺧﺖ
ﺄﻟ ﻫﺎي آآن
ﭘﻴﻤﺎﻳﺶ ﺎ
ﻚ ﺎﺶ ﺧﺖ دودوﻳﻲ ﺑﻪ ﻛﻛﻤﻚ
ﻣﺴﺄﻟﻪ :رﺳﻢ درﺧﺖ
ﺄﻟ
DS course- N. Razavi - ٢٠٠٧ ۵١ DS course- N. Razavi ٢٠٠٧ - ۵٢
دودوﻳﻲ
ﻛﭙﻲ ﻛﺮدن ﻳﻚ درﺧﺖ دودوﻳ
ﻣﺜﺎل :ﻛﭙ ﺗﻤﺮﻳﻦ
;function COPY (n: node): TREE .1ﺗﺎﺑﻌﻲ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﻪ ﻣﻨﻈﻮر ﺑﺮرﺳﻲ ﻧﻤﻮدن ﺗﺴﺎوي دو درﺧﺖ
var
;T: TREE دودوﻳﻲ ﺑﻨﻮﻳﺴﻴﺪ.
function EQUAL TREE (n1,
QUAL-T ;1 n2: node): boolean
begin
;)if n = nil then return (nil
;)new (T .2ﺗﺎﺑﻌﻲ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ ﺑﻪ ﻃﻮري ﻛﻪ ﺑﺮاي ﻫﺮ ﮔﺮه در
;T^.label := n^.label
;)T^.left := COPY (n^.left راﺳﺖ آن ﮔﮔﺮه ارا ﺎﺑﺎ
درﺧﺖ ﭼﭗ و ا ﺖ
ﺟﺎي ددو ززﻳﺮ د ﺧﺖ
دودوﻳﻲ ،ﺎدرﺧﺖ د د
د ﺧﺖ
;)T^.right := COPY (n^.right ﻫﻢ ﺗﻌﻮﻳﺾ ﻧﻤﺎﻳﺪ.
)return (T
;end ;function SWAP-TREE (n: node): TREE
DS course- N. Razavi - ٢٠٠٧ ۵٣ DS course- N. Razavi ٢٠٠٧ - ۵۴
ﺗﻤﺮﻳﻦ دودوﻳﻲ
وﻳﻲ ﻧﺨﻲ و
درﺧﺖ ﻲ
ر
.3روﻳﻪ اي ﺑﺮاي ارزﺷﻴﺎﺑﻲ ﻳﻚ ﻓﺮﻣﻮل ﮔﺰاره اي ﺑﻨﻮﻳﺴﻴﺪ) .راﻫﻨﻤﺎﻳﻲ :روﻳﻪ • اﻧﮕﻴﺰه :اﺳﺘﻔﺎده ﻫﻮﺷﻤﻨﺪ از ﻓﻴﻠﺪﻫﺎي اﺷﺎره ﮔﺮ nil
postorderارا اﺻﻼح ﻧ ﺎﻳ ﺪ
ﻧﻤﺎﻳﻴﺪ. – در ﻳﻚ درﺧﺖ دودوﻳﻲ ﺑﺎ nﮔﺮه ،ﻛﻼً 2nﻓﻴﻠﺪ اﺷﺎره ﮔﺮ وﺟﻮد دراد ﺑﻪ ﻃﻮري ﻛﻪ
n – 1ﻓﻴﻠﺪ ﻏﻴﺮ nilو n + 1ﻓﻴﻠﺪ داراي ﻣﻘﺪار nilﻣﻲ ﺑﺎﺷﻨﺪ.
( x1 ∧ ¬x2 ) ∨ (¬x1 ∧ x3 ) ∨ ¬x3
– ﻫﺮ ﻓﻴﻠﺪ nilﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﮔﺮه ﺑﻌﺪي )در ﻳﻚ ﭘﻴﻤﺎﻳﺶ ﺧﺎص( اﺷﺎره ﻛﻨﺪ.
T ∨
T
x1 True T ∨ ¬ F A
x2 False
x3 True T ∧ ∧ F x3 T B C
nodetype
type f A f
TREE = ^nodetype;
yp
node = ^nodetype;
nodetype = record f B f f C f
leftThread: boolean;
left: node;
f D f t E t t F t t G t
label: labeltype;
right: node;
rightThread: boolean t H t t I t
end;
DS course- N. Razavi ٢٠٠٧ - ۵٧ DS course- N. Razavi ٢٠٠٧ - ۵٨
دودوﻳﻲ
ﻧﺨﻲ دودوﻳ
ﭘﻴﻤﺎﻳﺶ ﻣﻴﺎن ﺗﺮﺗﻴﺐ درﺧﺖ ﻧﺨ دودوﻳﻲ
ﻧﺨﻲ دودوﻳ
ﭘﻴﻤﺎﻳﺶ ﻣﻴﺎن ﺗﺮﺗﻴﺐ درﺧﺖ ﻧﺨ
function INORDER-SUCC (n: node): node; function INORDER-THREAD (T: TREE): node;
var var
t: node; n: node;
n
T
A t begin
begin
B C n := T;
t := n^.
^ right; repeat
if not n^.rightThread then D E F G
n := INORDER-SUCC (n);
hil nott t^.
while ^ leftThread
l ftTh d dod H I t
if ( n <> T ) then
t := t^.left; write (n^.label);
return (t) untilil n = T
end; end;
DS course- N. Razavi - ٢٠٠٧ ۵٩ DS course- N. Razavi - ٢٠٠٧ ۶٠
ﻣﺜﺎل :ﭘﭘﻴﻤﺎﻳﺶ درﺧﺖ ﻧﺨﻲ دودوﻳﻲ دودوﻳﻲ
وﻳﻲ درﺧﺖ و
ﻋﻤﻮﻣﻲ ﺑﺑﻪ ر
درﺧﺖ ﻮ ﻲ
ﻳﻞ ر
ﺗﺒﺪﻳﻞ
ﺒ
(11) n T (1) n
ﻞ LMC-RSB
ﻲ ﺑﺑﻪ ﺷﻜﻞ
ﻋﻤﻮﻣﻲ
درﺧﺖ ﻮ
ﻳﻞ ر
ﺗﺒﺪﻳﻞ
ﺒ .١
f f
(7) n
A A
f A f
(5) n (9) n B C D B C D
A A
f D f t E t t F t t G t
C I
D
DS course- N. Razavi ٢٠٠٧ - ۶٣ DS course- N. Razavi ٢٠٠٧ - ۶۴
ﺗﺒﺪﻳﻞ ﺟﻨﮕﻞ ﺑﻪ درﺧﺖ دودوﻳﻲ
ﻲ ﺗﺒﺪﻳﻞ ﺟﻨﮕﻞ ﺑﻪ درﺧﺖ دودوﻳﻲ
ﻲ
.٢ﻗﺮار دادن ﻫﺮ ﻳﻚ از درﺧﺖ ﻫﺎي دودوﻳﻲ ﺑﻪ ﻋﻨﻮان زﻳﺮدرﺧﺖ .٢ﻗﺮار دادن ﻫﺮ ﻳﻚ از درﺧﺖ ﻫﺎي دودوﻳﻲ ﺑﻪ ﻋﻨﻮان زﻳﺮدرﺧﺖ
راﺳﺖ رﻳﺸﻪ درﺧﺖ ﻗﺒﻠﻲ راﺳﺖ رﻳﺸﻪ درﺧﺖ ﻗﺒﻠﻲ
DS course- N. Razavi ٢٠٠٧ - ۶۵ DS course- N. Razavi ٢٠٠٧ - ۶۶
D H ﻧﻜﺘﻪ :ﭘﻴﻤﺎﻳﺶ ﭘﻴﺶ ﺗﺮﺗﻴﺐ ﺟﻨﮕﻞ و ﭘﻴﻤﺎﻳﺶ ﭘﻴﺶ ﺗﺮﺗﻴﺐ •
I درﺧﺖ دودوﻳﻲ ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن ،ﻳﻜﺴﺎن اﺳﺖ.
DS course- N. Razavi ٢٠٠٧ - ۶٧ DS course- N. Razavi ٢٠٠٧ - ۶٨
ﭘﻴﻤﺎﻳﺶ ﺟﻨﮕﻞ Fﺑﻪ روش ﻣﻴﺎن ﺗﺮﺗﻴﺐ ﭘﻴﻤﺎﻳﺶ ﺟﻨﮕﻞ Fﺑﻪ روش ﭘﺲ ﺗﺮﺗﻴﺐ
اﮔﺮ Fﺗﻬﻲ اﺳﺖ ،ﺑﺮﻣﻲ ﮔﺮدﻳﻢ. .١ اﮔﺮ Fﺗﻬﻲ اﺳﺖ ،ﺑﺮﻣﻲ ﮔﺮدﻳﻢ. .١
ﭘﻴﻤﺎﻳﺶ زﻳﺮدرﺧﺖ ﻫﺎي اوﻟﻴﻦ درﺧﺖ در ﺟﻨﮕﻞ Fﺑﻪ ﺻﻮرت .٢
٢ ﭘﻴﻤﺎﻳﺶ زﻳﺮدرﺧﺖ ﻫﺎي اوﻟﻴﻦ درﺧﺖ در ﺟﻨﮕﻞ Fﺑﻪ ﺻﻮرت .٢
٢
ﺗﺮﺗﻴﺐ
ﻴﺐ ن ﺮﻣﻴﺎن
ﻴ ﺗﺮﺗﻴﺐ
ﻴﺐ ﭘﺲ ﺮ
ﻣﻼﻗﺎت رﻳﺸﻪ اوﻟﻴﻦ درﺧﺖ در ﺟﻨﮕﻞ F .٣ ﭘﻴﻤﺎﻳﺶ ﺑﻘﻴﻪ درﺧﺖ ﻫﺎي ﺟﻨﮕﻞ Fﺑﻪ ﺻﻮرت ﭘﺲ ﺗﺮﺗﻴﺐ .٣
ﭘﻴﻤﺎﻳﺶ ﺑﻘﻴﻪ درﺧﺖ ﻫﺎي ﺟﻨﮕﻞ Fﺑﻪ ﺻﻮرت ﻣﻴﺎن ﺗﺮﺗﻴﺐ .۴ ﻣﻼﻗﺎت رﻳﺸﻪ اوﻟﻴﻦ درﺧﺖ در ﺟﻨﮕﻞ F .۴
ﻧﻜﺘﻪ :ﭘﻴﻤﺎﻳﺶ ﻣﻴﺎن ﺗﺮﺗﻴﺐ ﺟﻨﮕﻞ و ﭘﻴﻤﺎﻳﺶ ﭘﻴﺶ ﺗﺮﺗﻴﺐ • ﻧﻜﺘﻪ :ﭘﻴﻤﺎﻳﺶ ﭘﺲ ﺗﺮﺗﻴﺐ ﺟﻨﮕﻞ و ﭘﻴﻤﺎﻳﺶ ﭘﻴﺶ ﺗﺮﺗﻴﺐ •
درﺧﺖ دودوﻳﻲ ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن ،ﻳﻜﺴﺎن اﺳﺖ. درﺧﺖ دودوﻳﻲ ﻣﺘﻨﺎﻇﺮ ﺑﺎ آن ،ﻳﻜﺴﺎن ﻧﻴﺴﺖ.
DS course- N. Razavi - ٢٠٠٧ ۶٩ DS course- N. Razavi ٢٠٠٧ - ٧٠
DS course- N. Razavi - ٢٠٠٧ ٧٣ DS course- N. Razavi - ٢٠٠٧ ٧۴
• رﻳﺸﻪ درﺧﺖ را ﺑﻪ ﻋﻨﻮان ﻧﺎم ﻣﺠﻤﻮﻋﻪ ﺣﺎوي ﻋﻨﺼﺮ iﺑﺮﻣﻲ ﮔﺮداﻧﻴﻢ. ﻣﺜﺎل:
1 2 3 4 5 6 7 8 9 10
parent 0 5 0 3 0 3 1 1 1 5
5 ﻣﺜﺎلFIND (9) :
• ﺜﺎل
7 8 9 7 8 9 2 10 4 6
DS course- N. Razavi - ٢٠٠٧ ٧۵ DS course- N. Razavi ٢٠٠٧ - ٧۶
ﭘﻴﺎده ﺳﺎزي ﻋﻤﻠﻴﺎت زﻳﺮﻣﺠﻤﻮﻋﻪ ﻫﺎي ﻣﺠﺰا ﻣﺜﺎل
• ﻓﺮض ﻛﻨﻴﺪ ﻛﻪ در اﺑﺘﺪا
p
procedure ;)UNION (i, j: integer
;) g
1≤ i ≤ n }Si = {i
begin
ﯿﻢ:
ﯽ دﻫﯿﻢم ﻣﯽ
اﻧﺠﺎم
ﻋﻤﻠﯿﺎت زﯾﺮ ررا ﺠ
ﯿ دﻧﺒﺎﻟﻪ
ل ﺒ • ﺣﺎل
parent [i] := j )UNION (1, 2) UNION (2, 3) UNION (3, 4) … UNION (n - 1, n
;end )FIND (1) FIND (2) … FIND (n
n
;function FIND (i: integer): integer ﺷﻮد:
ﺣﺎﺻﻞ ﻣﯽ ﺷ
درﺧﺖ ززﯾﺮ ﺎ ﻞ
ﻧﺘﯿﺠﻪ ﺧ
• در ﻧﺘ
begin . – ﻫﺰﯾﻨﻪ ﺗﻤﺎم ﻋﻤﻠﯿﺎت اﺟﺘﻤﺎعO(n) :
.
ﯾﺎﻓﺘﻦO(n2) :
ﻋﻤﻠﯿﺎت ﺎﻓ
ﺗﻤﺎم ﻠ ﺎ
ﻫﺮﯾﻨﻪ ﺎ
– ﻫ ﻨ
while parent [i] > 0 do .
DS course- N. Razavi ٢٠٠٧ - ٧٩ DS course- N. Razavi ٢٠٠٧ - ٨٠
WEIGHTED-U
UNION اﻟﮕﻮرﻳﺘﻢ
ﻋﻤﻠﻜﺮد اﻟﮕ ﺘ
ﻠﻜ:ﻣﺜﺎل
ﺜﺎل WEIGHTED-U
UNION اﻟﮕﻮرﻳﺘﻢ
ﻋﻤﻠﻜﺮد اﻟﮕ ﺘ
ﻠﻜ:ﻣﺜﺎل
ﺜﺎل
• 1 ≤ i ≤ n = 8, parent [i] = - count [i] = - 1 • UNION (1, 2), UNION (3, 4), UNION (5, 6), UNION (7, 8)
• UNION (1, 2), UNION (3, 4), UNION (5, 6), UNION (7, 8),
UNION (1, 3), UNION (5, 7), UNION (1, 5) [-2] [-2] [-2] [-2]
1 3 5 7
2 4 6 8
[ 1]
[-1] [ 1]
[-1] [ 1]
[-1] [ 1]
[-1] [ 1]
[-1] [ 1]
[-1] [ 1]
[-1] [ 1]
[-1]
1 2 3 4 5 6 7 8
WEIGHTED-U
UNION اﻟﮕﻮرﻳﺘﻢ
ﻋﻤﻠﻜﺮد اﻟﮕ ﺘ
ﻠﻜ:ﻣﺜﺎل
ﺜﺎل WEIGHTED-U
UNION اﻟﮕﻮرﻳﺘﻢ
ﻋﻤﻠﻜﺮد اﻟﮕ ﺘ
ﻠﻜ:ﻣﺜﺎل
ﺜﺎل
[-8]
[[-4]
4] [[-4]
4] 1
1 5
2 3 5
2 3 6 7
4 6 7
4 8
8
.ﻢ داد
ﺧﻮاﻫﻴﻢ ﺮroot (i) ﺑﺮاﺑﺮﺮ
ﻗﺮارر ﻮ ﺮ begin
r := i;
while parent [r] > 0 do
r := parent [r];
while i <> r do begin
s := parent [i];
pparent [i] := r;
i := s
end;
return (r)
end;
وWEIGHTED-UNION ﻋﻤﻠﻴﺎت
ﻴ ﺗﺤﻠﻴﻞ
ﻴ
ﻣﺜﺎل
COLLAPSING-FIND
• FIND (8), FIND (8), FIND (8), FIND (8), FIND (8), ﻛﻪ ﻫﺮ ﻛﺪام ﻳﻚ ﮔﺮه،• ﻓﺮض ﻛﻨﻴﺪ ﻛﻪ ﺑﺎ ﺟﻨﮕﻠﻲ از درﺧﺖ ﻫﺎ
FIND (8),
(8) FIND (8),
(8) FIND (8) ﺑﺮاي ا ش
ﭘﺮدازش زﻣﺎن ﻻﻻزم ا اﻛT (f, u) .ﺷﺮوع ﻛﻛﻨﻴﻢ
ﺣﺪاﻛﺜﺮ ﺎ دارد ﺷ
ا
u ≥ n/2 اﮔﺮﺮ.ﻞ اﺟﺘﻤﺎعع اﺳﺖ
ﻋﻤﻞu ﻦ و ﻋﻤﻞf ﻲ ازز
ﻞ ﻳﺎﻓﺘﻦ ﺗﺮﻛﻴﺒﻲﺮ
[-8]
: اﺳﺘﻔﺎده ﺷﻮدFIND • ﺗﻌﺪاد ﺣﺮﻛﺖ ﻫﺎ اﮔﺮ از :k2 وk1 آﻧﮕﺎه ﺑﻪ ازاي ﻣﻘﺎدﻳﺮ ﻣﺜﺒﺖ،ﺑﺎﺷﺪ
1
3 × 8 = 24
2 3 5 : اﺳﺘﻔﺎده ﺷﻮدCOLLAPSING-FIND • اﮔﺮ از
k1 (n + f α(f + n, n)) ≤ T(f, u) ≤ k2 (n + f α(f + n, n))
4 6
3 + 3 + 7 = 13
7
DS course- N. Razavi - ٢٠٠٧ ٨٩ DS course- N. Razavi ٢٠٠٧ - ٩٠
درﺧﺖ ﺎ ت
ﻋﺒﺎرت ﭘﺮاﻧﺘﺰي ﺑﻪ ﺧﺖ
ﻛﺎﻣﻼ اﻧﺘﺰ
ًت ﻛﺎ ﻼ
ﻋﺒﺎرت
ﺗﺒﺪﻳﻞ ﺎ
اﻟﮕﻮرﻳﺘﻢ ﺗ ﻞ
اﻟﮕ ﺘ درﺧﺖ ﺎ ت
ﻋﺒﺎرت ﭘﺮاﻧﺘﺰي ﺑﻪ ﺧﺖ
ﻛﺎﻣﻼ اﻧﺘﺰ
ًت ﻛﺎ ﻼ
ﻋﺒﺎرت
ﺗﺒﺪﻳﻞ ﺎ
اﻟﮕﻮرﻳﺘﻢ ﺗ ﻞ
اﻟﮕ ﺘ
ﻛﺎﻣﻼ ﭘﺮاﻧﺘﺰي
ًﺗﺒﺪﻳﻞ درﺧﺖ ﻋﺒﺎرت ﺑﻪ ﻓﺮم ﻛﺎﻣﻼ ﻛﺎﻣﻼ ﭘﺮاﻧﺘﺰي
ًﺗﺒﺪﻳﻞ درﺧﺖ ﻋﺒﺎرت ﺑﻪ ﻓﺮم ﻛﺎﻣﻼ
procedure PRINT-INFIX (T: TREE); if (T^.label is a binary operator) then begin
b i
begin write ((‘(‘);
( );
if (T^..label is a unary operator) then begin PRINT-INFIX (T^.left);
write (T^.label);
write (‘(‘);
PRINT-IINFIX (T^..right);
write (T^.label); write (‘)’)
PRINT-INFIX (T^.right); endd else
l
write (‘)’) write (T^.label)
end end;
w1 w2
1 2 3 4 5 6 8
d f b g a c e
T1 T2
DS course- N. Razavi - ٢٠٠٧ ١٠٣ DS course- N. Razavi - ٢٠٠٧ ١٠۴
روش ﻛﺪ ﮔﺬاري ﻫﺎﻓﻤﻦ روش ﻛﺪ ﮔﺬاري ﻫﺎﻓﻤﻦ
3 3 4 5 6 8 4 5 6 6 8
b g a c e g a c e
1 2 3 3
d f b
1 2
d f
6 6 8 9 8 9 12
c e e
3 3 4 5 4 5 6 6
b g a g a c
1 2 3 3
d f b
1 2
d f
29
DS course- N. Razavi ٢٠٠٧ - ١٠٩ DS course- N. Razavi ٢٠٠٧ - ١١٠
ﮔﺬاري ﻫﺎﻓﻤﻦ
ﻦ روش ﻛﺪ ري ﻳﻚ ﻗﻀﻴﻪ ﻣﺮﺗﺒﻂ
• ﻣﺮﺣﻠﻪ (3ﺗﻮﻟﻴﺪ ﻛﺪ ﻛﺎراﻛﺘﺮﻫﺎ:
ﺑﺮﭼﺴﺐ ) 1و ﺎﻳﺎ ﻋﻜ
ﺑﺮﻋﻜﺲ( راﺳﺖ ﭼ
ﺑﻪ ﺷﺎﺧﻪ ﻫﺎي ا ﺖ ﺑﺮﭼﺴﺐ 0و ﻪﭼﭗ ﭼ ﺑﻪ ﺷﺎﺧﻪ ﻫﺎي ﭼ ﻧﻬﺎﻳﻲ ،ﻪ – ددر د ﺧﺖ
درﺧﺖ ﻧﻬﺎ
ﻣﻲ دﻫﻴﻢ. • ﻗﻀﻴﻪ :ﻳﻚ درﺧﺖ دودوﻳﻲ ﻛﺎﻣﻞ ﺑﺎ nﮔﺮه ﺑﺮگ ،داراي n – 1
ﻣﻮﺟﻮد
ي ﻮﺟﻮﺐ ﻫﺎيﺑﺮﭼﺴﺐ
ﭘﻴﻤﻮده و ﺑﺮﭼ
ﻛﺎراﻛﺘﺮﺮ ررا ﭘﻴ ﻮ
ن ر ﻣﺮﺑﻮط ﺑﺑﻪ آن
ﺑﺮگ ﺮﺑﻮ
رﻳﺸﻪ ﺗﺎ ﺑﺮ
ﻴﺮ ازز رﻳ
ﻛﺎراﻛﺘﺮ ،ﻣﺴﻴﺮ
ي ﻫﺮﺮ ر ﺮ – ﺑﺑﻪ زازاي
در ﻣﺴﻴﺮ را ﺑﻪ ﻋﻨﻮان ﻛﺪ آن ﻛﺎراﻛﺘﺮ در ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ. ﺑﺎﺷﺪ.
داﺧﻠﻲ ﻣﻲ ﺎﺷ
ﮔﮔﺮه اﺧﻠ
29
0 1 ﻛﺎراﻛﺘﺮ
ﻛﺎ اﻛ ﻫﺎﻓﻤﻦ
ﻛﻛﺪ ﺎﻓ
0
12
1 0
17
1
a 111 • اﺛﺒﺎت :از ﻃﺮﻳﻖ اﺳﺘﻘﺮا روي n
b 001
6 6 8 9
0 1 0 1 c 01
c e
3 3 4 5 d 0000
0 1
b g a e 10
1 2
76 f 0001
d f ﺿﺮﻳﺐ ﻓﺸﺮده ﺳﺎزي =
87 g 110
DS course- N. Razavi ٢٠٠٧ - ١١١ DS course- N. Razavi ٢٠٠٧ - ١١٢
2ﻧﻜﺘﻪ در ﻣﻮرد روش ﻛﺪ ﮔﺬاري ﻫﺎﻓﻤﻦ رﻣﺰﮔﺸﺎﻳﻲ(
دﻳﻜﻮد ﻛﺮدن )رﻣﺰﮔﺸﺎﻳ
• روش ﻛﺪ ﮔﺬاري ﻫﺎﻓﻤﻦ ﺑﻬﻴﻨﻪ ﻣﻲ ﺑﺎﺷﺪ ،ﻳﻌﻨﻲ ﺑﺎ اﻳﻦ روش 0001111000010
ﺷﻮد.
ﺣﺪاﻗﻞ ﻣﻲ ﺷ
ﺳﺎزي اﻗﻞﻓﺸﺮده ﺎ
ﺿﺮﻳﺐ ﻓﺸ
ﺿ 29
12 17
• ﻛﺪﻫﺎي ﺑﻪ دﺳﺖ آﻣﺪه ﺧﺎﺻﻴﺖ ﭘﻴﺸﻮﻧﺪي دارﻧﺪ ،ﻳﻌﻨﻲ در ﻛﺘﺎب
6 6 8 9
ﻛﺪ ﻫﻴﭻ ﻛﻠﻤﻪ ﻛﺪي ﭘﻴﺸﻮﻧﺪ ﻛﻠﻤﻪ ﻛﺪ دﻳﮕﺮي ﻧﻤﻲ ﺑﺎﺷﺪ. c e
3 3 4 5
ﺳﺎدﮔﻲ ﻗﺎﺑﻞ
ﻛﺮدن ﺑﺎ ﻳﻚ ﺑﺎﺑﺎر ﭘﻮﻳﺶ ﻓﺎﻳﻞ ﻛﺪ ﺷﺪه ﺑﻪ ﺳﺎدﮔ – ددر ﻧﺘ ﺠﻪ
ﻧﺘﻴﺠﻪ دﻳﻜﻮد ﻛ دن
b g a
اﻧﺠﺎم ﻣﻲ ﺑﺎﺷﺪ. 1 2
DS course- N. Razavi ٢٠٠٧ - ١١٣ DS course- N. Razavi ٢٠٠٧ - ١١۴
DS course- N. Razavi ٢٠٠٧ - ١١۵ DS course- N. Razavi ٢٠٠٧ - ١١۶