You are on page 1of 6

‫ﻓﻬﺮﺳﺖ ﻣﻨﺎﺑﻊ و ﻣﺮاﺟﻊ‬

‫ﺳﺎﺧﺘﻤﺎن داده ﻫﺎ و اﻟﮕﻮرﻳﺘﻢ ﻫﺎ )‪(Aho, Hopcraft, Ulman‬‬ ‫‪.‬‬


‫‪.١‬‬
‫ﺗﺤﻠﻴﻞ و ﻣﺮﺗﺒﻪ‬
‫ﻞ‬ ‫اﻟﮕﻮرﻳﺘﻢ ﻫﺎ‪ :‬ﻛﺎراﻳﻲ‪،‬‬
‫ﮕ‬ ‫ﺳﺎﺧﺘﻤﺎن داده ﻫﺎ در ﭘﺎﺳﻜﺎل )‪(Horowitz, Sahni‬‬ ‫‪.٢‬‬
‫ﻣﻘﺪﻣﻪ اي ﺑﺮ اﻟﮕﻮرﻳﺘﻢ ﻫﺎ )… ‪(Cormen, Rivest,‬‬ ‫‪.٣‬‬
‫ﻃﺮاﺣﻲ اﻟﮕﻮرﻳﺘﻢ ﻫﺎ ﺑﻪ ﻛﻤﻚ ﺷﺒﻪ ﻛﺪﻫﺎي ‪Neapolitan ) C++‬‬
‫‪Neapolitan,‬‬ ‫ﻃﺮاﺣ‬ ‫‪.۴‬‬
‫ﺳﻴﺪ ﻧﺎﺻﺮ رﺿﻮي‬ ‫‪(Naimi Pour‬‬
‫‪E‬‬
‫‪E-mail:‬‬
‫‪il: razavi@Comp.iust.ac.ir‬‬
‫‪i@C‬‬ ‫‪i t i‬‬ ‫ﭘﺮوﻓﺴﻮر‬
‫اﺳﺘﺎد ﻣﺤﺘﺮم ﻓ‬
‫ﻫﺎ ا ﺎ‬
‫اﻟﮕﻮرﻳﺘﻢ ﺎ‬
‫ﻫﺎ و اﻟﮕ‬
‫داده ﺎ‬
‫ﺳﺎﺧﺘﻤﺎن ا‬
‫ﺟﺰوه درﺳﻲ ﺎ ﺎ‬ ‫‪.۵‬‬
‫‪۵‬‬
‫‪1386‬‬ ‫ﻗﺪﺳﻲ‬
‫‪ .۶‬اﺳﻼﻳﺪﻫﺎي درس ﺳﺎﺧﺘﻤﺎن داده ﻫﺎ و اﻟﮕﻮرﻳﺘﻢ ﻫﺎ‬

‫‪N. Razavi -DS course - 2005‬‬ ‫‪٢‬‬

‫ﻣﺮاﺣﻞ ﺣﻞ ﻣﺴﺎﻟﻪ‬
‫ﻣﻌﺮﻓﻲ ﺳﺮﻓﺼﻞ‬ ‫ﻣﺮاﺣﻞ ﺣﻞ ﻣﺴﺄﻟﻪ‪:‬‬ ‫•‬
‫‪ .1‬اﻳﺠﺎد ﻳﻚ ﻣﺪل اﻧﺘﺰاﻋﻲ از ﻣﺴﺄﻟﻪ ‪ --‬ﻣﺪل‬
‫• ﻣﻘﺪﻣﻪ )‪(1‬‬ ‫اﻟﮕﻮرﻳﺘﻢ‬
‫ﻣﺪل ‪ --‬اﻟﮕ‬
‫ﺣﻞ ل‬‫ﺑﺮاي ﻞ‬
‫اﻟﮕﻮرﻳﺘﻢ ا‬
‫ﻳﺎﻓﺘﻦ اﻟﮕ‬
‫‪ .22‬ﺎﻓ‬
‫• ﺗﺤﻠﻴﻞ ﭘﻴﭽﻴﺪﮔﻲ زﻣﺎﻧﻲ اﻟﮕﻮرﻳﺘﻢ ﻫﺎ )‪(3‬‬
‫ﻛﺎرآ‬
‫ﻴﺢ و ر‬
‫ﻢ ﺻﺤﻴﺢ‬ ‫ﻛﺎرآ – ﻮرﻳ‬
‫اﻟﮕﻮرﻳﺘﻢ‬ ‫ﻞ ر‬ ‫ي ﺣﻞ‬‫ﺑﺮاي‬
‫ﻢ ﺑﺮ‬
‫اﻟﮕﻮرﻳﺘﻢ‬
‫ﻴﻞ ﻮرﻳ‬ ‫‪ .3‬ﺗﺤﻠﻴﻞ‬
‫• ﻟﻴﺴﺖ ﻫﺎ )‪(2‬‬ ‫‪ .4‬ﺗﻌﺮﻳﻒ ﺳﺎﺧﺘﻤﺎن داده ﻫﺎ‬
‫– ﭘﭘﺸﺘﻪ )‪(1‬‬
‫‪ .5‬ﭘﻴﺎده ﺳﺎزي – ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ اﺟﺮا روي ﻣﺎﺷﻴﻦ‬
‫– ﺻﻒ )‪(1‬‬
‫‪... .6‬‬
‫ﻫﺎ )‪(4‬‬ ‫• ﺧﺖ‬
‫درﺧﺖ ﺎ‬
‫ﻣﺴﺎﻟ‬ ‫ﺳﺎﺧﺘﻤﺎن‬
‫• ﮔﺮاف )‪(2‬‬ ‫ﻣﺪل اﻧﺘﺰاﻋﻲ‬ ‫اﻟﮕﻮرﻳﺘﻢ‬
‫داده‬
‫ﭘﻴﺎده ﺳﺎزي‬
‫ه‬
‫• اﻟﮕﻮرﻳﺘﻢ ﻫﺎي ﻣﺮﺗﺐ ﺳﺎزي )‪(1‬‬
‫ﺗﺤﻠﻴﻞ‬
‫‪N. Razavi -DS course - 2005‬‬ ‫‪٣‬‬ ‫‪N. Razavi -DS course - 2005‬‬ ‫‪٤‬‬
‫ﻣﺜﺎل‬ ‫ﻣﺪل ﺳﺎزي‬
‫ﺑﺮﻧﺎﻣﻪ رﻳﺰي ﭼﺮاغغ راﻫﻨﻤﺎﻳﻲ ﺗﻘﺎﻃﻊﻊ زﻳﺮ ﺑﺎ اﺳﺘﻔﺎده از ﺣﺪاﻗﻞ‬ ‫•‬ ‫ﻣﺪل ﺳﺎزي ﮔﺮدش ﻫﺎ‪:‬‬ ‫‪.1‬‬
‫ﻣﺜﻼ ‪ AD‬ﺑﻪ ﻣﻌﻨﺎي ﮔﺮدش از ‪ A‬ﺑﻪ ‪ D‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬ ‫•‬
‫ﺗﻌﺪاد رﻧﮓ ﻫﺎ‬
‫رﺳﻢ ﻳﻚ ﻳﺎل ﺑﻴﻦ ﻫﺮ دو ﮔﺮدﺷﻲ ﻛﻪ ﻫﻤﺰﻣﺎن ﻣﻴﺴﺮ ﻧﻤﻲ ﺑﺎﺷﻨﺪ‪.‬‬ ‫‪.2‬‬

‫‪D‬‬
‫‪E‬‬ ‫‪A‬‬
‫‪AB‬‬ ‫‪AC‬‬ ‫‪A‬‬
‫‪AD‬‬
‫‪D‬‬
‫‪E‬‬
‫‪C‬‬
‫‪BA‬‬ ‫‪BC‬‬ ‫‪BD‬‬ ‫‪C‬‬
‫‪A‬‬
‫‪DA‬‬ ‫‪DB‬‬ ‫‪DC‬‬ ‫‪A‬‬
‫‪B‬‬
‫‪B‬‬
‫‪EA‬‬ ‫‪EB‬‬ ‫‪EC‬‬ ‫‪ED‬‬
‫‪N. Razavi -DS course - 2005‬‬ ‫‪٥‬‬ ‫‪N. Razavi -DS course - 2005‬‬ ‫‪٦‬‬

‫ﻳﺎﻓﺘﻦ اﻟﮕﻮرﻳﺘﻢ‬ ‫اﻟﮕﻮرﻳﺘﻢ ﺣﺮﻳﺼﺎﻧﻪ‬


‫روش ﺣﺮﻳﺼﺎﻧﻪ‪ :‬ﻳﻚ راه ﺣﻞ ﺳﺮﻳﻊ ﻛﻪ ﻟﺰوﻣﺎ ﺟﻮاب دﻗﻴﻖ ﻧﻤﻲ دﻫﺪ‪.‬‬ ‫•‬
‫ﻞ ﻣﺴﺄﻟﻪ ررﻧﮓ ﻴﺰي‬
‫آﻣﻴﺰي‬ ‫ﻳﻦ ﻣﺴﺄﻟﻪ ﺑﺑﻪ ﺣﻞ‬ ‫ﻞ اﻳﻦ‬
‫ﺣﻞ‬ ‫•‬
‫ﮔﺮاف ﻣﻲ اﻧﺠﺎﻣﺪ ﺑﻪ ﻃﻮرﻳﻜﻪ رﺋﻮس ﻣﺠﺎور‬
‫‪AB‬‬ ‫‪AC‬‬ ‫‪AD‬‬ ‫ﻫﻤﺮﻧﮓ ﻧﺒﺎﺷﻨﺪ و ﺗﻌﺪاد رﻧﮓ ﻫﺎ ﺣﺪاﻗﻞ ﺑﺎﺷﺪ‪.‬‬ ‫اول ررﻧﮓ‬
‫ﻦ ررا ﺑﺑﺎ ررﻧﮓ و‬
‫ﻮس ﻣﻤﻜﻦ‬
‫ﻴﻢ ﺣﺪاﻛﺜﺮﺮ ﺗﻌﺪاد ررﺋﻮس‬
‫ﻲ ﻛﻨﻴﻢ‬
‫ﻲ ﻣﻲ‬
‫درر ﺑاﺑﺘﺪا ﺳﻌﻲ‬ ‫•‬
‫ﻛﻨﻴﻢ‪ .‬ﺳﭙﺲ ﺣﺪاﻛﺜﺮ ﺗﻌﺪاد رﺋﻮس رﻧﮓ ﻧﺸﺪه ﻣﻤﻜﻦ را ﺑﺎ رﻧﮓ دوم رﻧﮓ‬
‫ﺗﻮﺟﻪ‪ :‬رﺋﻮس ‪ ED ،BA‬و ‪ DC‬ﻧﻴﺎز ﺑﻪ رﻧﮓ‬ ‫•‬
‫‪BA‬‬ ‫‪BC‬‬ ‫‪BD‬‬ ‫ﮔﺮدش ﺑﻪ راﺳﺖ(‬
‫آﻣﻴﺰي ﻧﺪارﻧﺪ ) ﮔ دش‬
‫آﻣ ﺰي‬ ‫ﻣﻣﻲ ﻛﻨﻴﻢ و اﻳﻨﻜﺎر را ﺗﺎ زﻣﺎن رﻧﮓ ﺷﺪن ﻛﻠﻴﻪ رﺋﻮس اداﻣﻪ ﻣﻣﻲ دﻫﻴﻢ‪.‬‬

‫‪DA‬‬ ‫‪DB‬‬ ‫‪DC‬‬ ‫ﻣﺴﺄﻟﻪ ‪NP-Complete‬‬ ‫ﻣﺴﺄﻟﻪ ﻓﻮق ﻳﻚ ﻣ ﺄﻟﻪ‬


‫ﻣ ﺄﻟﻪ‬ ‫•‬
‫ﻣﻲ ﺑﺎﺷﺪ و ﺗﺎ ﻛﻨﻮن راه ﺣﻞ ﻛﺎرآﻳﻲ ﺑﺮاي آن‬ ‫اﻟﮕﻮرﻳﺘﻢ رﻧﮓ آﻣﻴﺰي رﺋﻮس ﺑﺎ ﻳﻚ رﻧﮓ ﺟﺪﻳﺪ‪:‬‬ ‫•‬
‫ﻳﺎﻓﺖ ﻧﺸﺪه اﺳﺖ و ﻛﺴﻲ ﻫﻢ ﻧﺘﻮاﻧﺴﺘﻪ ﺛﺎﺑﺖ‬ ‫ﻳﻚ رأس ﺑﺪون رﻧﮓ را اﻧﺘﺨﺎب ﻛﻦ و آن را ﺑﺎ رﻧﮓ ﺟﺪﻳﺪ‪ ،‬رﻧﮓ ﺑﺰن‪.‬‬ ‫‪.1‬‬
‫ﻛﺎرآﻳﻲ وﺟﻮد‬
‫ﺣﻞ ﻛﺎ آ‬
‫راه ﻞ‬
‫ﻣﺴﺄﻟﻪ ا‬
‫ﺑﺮاي ااﻳﻦ ﺄﻟ‬
‫ﻛﻛﻨﺪ ﻛﻛﻪ ا‬
‫‪EA‬‬ ‫‪EB‬‬ ‫‪EC‬‬ ‫‪ED‬‬ ‫ﻧﺪارد‪.‬‬ ‫ﻟﻴﺴﺖ رﺋﻮس رﻧﮓ ﻧﺸﺪه را ﭘﻮﻳﺶ ﻛﻦ‪ .‬ﺑﺎزاء ﻫﺮ رأس رﻧﮓ ﻧﺸﺪه‪ ،‬ﺗﻌﻴﻴﻦ ﻛﻦ ﻛﻪ‬ ‫‪.2‬‬
‫ﻳﺎﻟﻲ دارد‪.‬‬
‫رﺋﻮﺳﻲ ﻛﻪ ﺗﺎﻛﻨﻮن ﺑﺎ رﻧﮓ ﺟﺪﻳﺪ رﻧﮓ ﺷﺪه ﻳﺎﻟ‬‫ﻳﻜﻲ از رﺋﻮﺳ‬
‫آﻳﺎ اﻳﻦ رأس ﺑﺎ ﻳﻜ‬
‫اﮔﺮ ﭼﻨﻴﻦ ﻳﺎﻟﻲ وﺟﻮد ﻧﺪاﺷﺖ‪ ،‬اﻳﻦ رأس را ﺑﺎ رﻧﮓ ﺟﺪﻳﺪ رﻧﮓ ﺑﺰن‪.‬‬

‫‪N. Razavi -DS course - 2005‬‬ ‫‪٧‬‬ ‫‪N. Razavi -DS course - 2005‬‬ ‫‪٨‬‬
‫ﻣﺜﺎل ﻧﻘﺾ ﺑﺮاي اﻟﮕﻮرﻳﺘﻢ ﺣﺮﻳﺼﺎﻧﻪ‬ ‫ﻣﺜﺎل ﻧﻘﺾ ﺑﺮاي اﻟﮕﻮرﻳﺘﻢ ﺣﺮﻳﺼﺎﻧﻪ‬
:‫ﺣﺮﻳﺼﺎﻧﻪ‬
‫ﻢ ﺮﻳﺼ‬‫اﻟﮕﻮرﻳﺘﻢ‬
‫ﺗﻮﺳﻂ ﻮرﻳ‬
‫ف ﻮ‬
‫ﮔﺮاف‬
‫ﻴﺰي ﺮ‬
‫ﮓ آﻣﻴﺰي‬
‫ررﻧﮓ‬ • ‫ف ﺑﺑﺎ دوو ررﻧﮓ‬
‫ﮓ‬ ‫ﮔﺮاف‬
‫ﻴﺰي ﺮ‬
‫ﮓ آﻣﻴﺰي‬
‫ررﻧﮓ‬ •
New color = Green
New color = Red
New color = Blue ٣ ٣

١ ۵ ٢ ١ ۵ ٢

۴ ۴

N. Razavi -DS course - 2005 ٩ N. Razavi -DS course - 2005 ١٠

‫اﻟﮕﻮرﻳﺘﻢ ﺣﺮﻳﺼﺎﻧﻪ‬ ‫راه ﺣﻞ ﻣﺴﺎﻟﻪ‬


:‫ﻳﻲ‬
‫راﻫﻨﻤﺎﻳﻲ‬
‫ﭼﺮاغغ ر ﻤ‬
‫ﻣﺮﺑﻮط ﺑﺑﻪ ﻣﺴﺄﻟﻪ ﭼﺮ‬
‫ف ﺮﺑﻮ‬‫ﮔﺮاف‬
‫ﻴﺰي ﺮ‬
‫ﮓ آﻣﻴﺰي‬
‫ررﻧﮓ‬ •
:‫رﻧﮓ آآﻣﻴﺰي ﺑﺮاي ﮔﮔﺮاف ﻣﺮﺑﻮط ﺑﻪ ﻣﺴﺎﻟﻪ ﭼﺮاغ راﻫﻨﻤﺎﻳﻲ‬
‫ﻳﻚ ﮓ‬‫ﻚ‬ •

AB AC AD
color turns extras
new color = blue

new color = red BA BC BD blue AB, AC, AD BA, DC, ED

new color = green red BC, BD, EA BA, DC, ED


new color = yellow DA DB DC
green DA DB
DA, AD BA
AD, BA, DC
DC, ED

EA EB EC ED yellow
y EB,, EC BA,, DC,, EA,, ED

N. Razavi -DS course - 2005 ١١ N. Razavi -DS course - 2005 ١٢


‫ارزﻳﺎﺑﻲ راه ﺣﻞ ﻣﺴﺎﻟﻪ‬ ‫ﻃﺮاﺣﻲ اﻟﮕﻮرﻳﺘﻢ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﺪل‬
‫ رأس ﺑﻪ ﻃﻮري ﻛﻪ ﻫﺮ زوج‬k ‫ ﻣﺠﻤﻮﻋﻪ اي از‬:k-clique ‫ﺗﻌﺮﻳﻒ‬
‫ج از اﻳﻦ رﺋﻮس‬ •
.‫ﺗﻮﺳﻂ ﻳﻚ ﻳﺎل ﺑﻪ ﻫﻢ ﻣﺘﺼﻞ ﺑﺎﺷﻨﺪ‬ procedure
d greedy
d ( var G: GRAPH; var newclr
G GRAPH l : SET );
)
k ‫ﺑﺮ‬ ‫ ﺑﺮ‬k-clique
‫ﺑﺮاﺑﺮ‬ q ‫ﻴﺰي ﻳﻳﻚ‬
‫ي ررﻧﮓ آﻣﻴﺰي‬
‫ﺑﺮاي‬
‫زم ﺑﺮ‬
‫ي ﻻزم‬
‫ﻳﻬﻲ ﺗﻌﺪاد ررﻧﮓ ﻫﺎي‬
‫ﻮر ﺑﺑﺪﻳﻬﻲ‬
‫ﺑﺑﻪ ﻃﻮر‬ • begin
!‫ﻣﻲ ﺑﺎﺷﺪ؟‬ newclr := ∅;
for each uncolored vertex v of G do
AB AC AD ‫ ﻣﻲ ﺎﺷ‬4-clique
‫ﺑﺎﺷﺪ‬ 4 cliq e ‫ﻳﻚ‬
‫ﺷﺎﻣﻞ ﻚ‬ ‫ﮔﺮاف ﺷﺎ ﻞ‬
‫ااﻳﻦ ﮔ اف‬ •
‫و ﺑﻨﺎﺑﺮاﻳﻦ ﺣﺪاﻗﻞ ﺗﻌﺪاد رﻧﮓ ﻫﺎي ﻻزم‬ if v is not adjacent to any vertex in newclr then begin
‫ﺷﺪه‬
‫ﻳﺎﻓﺘﻪ ﺷﺪ‬
‫ﺣﻞ ﺎﻓﺘﻪ‬
‫راه ﻞ‬
‫ﺑﻨﺎﺑﺮاﻳﻦ ا‬
‫ ﻨﺎ ا ﻦ‬.‫ﺑﺎﺷﺪ‬
‫ ﻣﻲ ﺎﺷﺪ‬4 ‫ﺑﺮاﺑﺮ‬
‫ا‬ mark v colored;
BA BC BD .‫ﺑﻬﻴﻨﻪ ﻣﻲ ﺑﺎﺷﺪ‬ add v to newclr
end
DA DB DC end; { greedy }

EA EB EC ED
N. Razavi -DS course - 2005 ١٣ N. Razavi -DS course - 2005 ١٤

‫ ﻣﺮﺣﻠﻪ اول‬:‫ﭘﺎﻻﻳﺶ اﻟﮕﻮرﻳﺘﻢ‬ ‫ ﻣﺮﺣﻠﻪ دوم‬:‫ﭘﺎﻻﻳﺶ اﻟﮕﻮرﻳﺘﻢ‬


procedure greedy ( var G: GRAPH; var newclr: SET );
procedure greedy ( var G: GRAPH; var newclr: SET ); var
begin found: boolean;
v, w: integer;
newclr := ∅; begin
f each
for l d vertex v off G do begin
h uncolored i newclr l := ‫;׎‬
‫׎‬
v := first uncolored vertex in G;
found := false; while v <> null do begin
f each
for t w in
h vertex i newclr
l do
d found := : false;
w := first vertex in newclr;
if there is an edge between v and w in G then while w <> null do begin
found :=
: true; if there is an edge between v and w in G then
found := true;
if found = false then begin {v is adjacent to no vertex in newclr} w := next vertex in newclr;
mark v colored; end;
if found = false then begin
add v to newclr mark v colored;
end add v to newclr
ewc
end;
end v := next uncolored vertex in G
end; { greedy } end
end; { greedy }
N. Razavi -DS course - 2005 ١٥ N. Razavi -DS course - 2005 ١٦
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‬
‫ﻣﺮاﺣﻞ ﺎ‬
‫ﺧﻼﺻﻪ ا ﻞ‬
‫ﻼ‬ ‫ﻳﺎدآوري در ﻣﻮرد روﻳﻪ ﺎ‬
‫ﻫﺎ‬ ‫ﺎآ‬
‫ﻧﻘﺶ روﻳﻪ ﻫﺎ‪:‬‬ ‫•‬
‫ﻧﻮﻳﺴﻲ‬
‫ﺗﻌﻤﻴﻢ ﻋﻤﻠﮕﺮﻫﺎي ﻣﻮﺟﻮد در زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴ‬ ‫–‬
‫ﻣﺎﻧﻨﺪ ﺿﺮب دو ﻣﺎﺗﺮﻳﺲ‬ ‫•‬
‫‪mathematical‬‬ ‫‪abstract‬‬ ‫‪data‬‬ ‫اﻟﮕﻮرﻳﺘﻢ ﺑﺎ ﻛﻨﺎر ﻫﻢ ﻗﺮار‬
‫ﻳﻚ ﮕ‬‫ﻛﭙﺴﻮﻟﻪ ﺳﺎزي ﻗﺴﻤﺖ ﻫﺎﻳﻲ از ﻚ‬ ‫–‬
‫‪model‬‬ ‫‪data types‬‬ ‫‪structures‬‬
‫دادن ﺗﻤﺎمم ﺟﻤﻼت ﻣﺮﺑﻮط ﺑﻪ ﻳﻚ ﺟﻨﺒﻪ ﺧﺎص از ﺑﺮﻧﺎﻣﻪ در ﻳﻚ‬
‫‪informal‬‬ ‫‪pseudo-language‬‬ ‫‪Pascal‬‬ ‫ﺑﺨﺶ‬
‫‪g‬‬
‫‪algorithm‬‬ ‫‪program‬‬ ‫‪program‬‬
‫‪p‬‬ ‫‪g‬‬ ‫ﻣﺎﻧﻨﺪ اﺳﺘﻔﺎده از ﻳﻚ روﻳﻪ ﺑﺮاي ﺧﻮاﻧﺪن ﺗﻤﺎم ورودي ﻫﺎ و ﺑﺮرﺳﻲ اﻋﺘﺒﺎر‬ ‫•‬
‫آﻧﻬﺎ‬
‫ﺟﻨﺒﻪ ﻫﺎي ﻛ ﻮﻟﻪ‬
‫ﻛﭙﺴﻮﻟﻪ‬ ‫ﺗﻐﻴﻴﺮات در ﺟﻨ ﻪ‬
‫ﺑﺮاي اﻧﺠﺎم ﺗﻐ ات‬
‫داﻧﻴﻢ ﺑ اي‬
‫ﻛﭙﺴﻮﻟﻪ ﺳﺎزي‪ :‬ﻣﻣﻲ داﻧ‬
‫ﻣﺰﻳﺖ ﻛ ﻮﻟﻪ‬ ‫•‬
‫ﺷﺪه ﺑﻪ ﻛﺠﺎ ﺑﺮوﻳﻢ‪.‬‬

‫‪N. Razavi -DS course - 2005‬‬ ‫‪١٧‬‬ ‫‪N. Razavi -DS course - 2005‬‬ ‫‪١٨‬‬

‫اﻧﻮاع داده اي اﻧﺘﺰاﻋﻲ )‪(ADT‬‬ ‫ﻣﺜﺎل‪ ADT :‬ﻫﺎي ﺑﻜﺎر رﻓﺘﻪ در روﻳﻪ ‪greedy‬‬
‫ﺗﻌﺮﻳﻒ ‪ :ADT‬ﻳﻚ ﻣﺪل رﻳﺎﺿﻲ ﺑﻪ ﻫﻤﺮاه ﻣﺠﻤﻮﻋﻪ اي از ﻋﻤﻠﻴﺎت‬ ‫•‬ ‫ﻣﺠﻤﻮﻋﻪ )‪(SET‬‬ ‫•‬
‫ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺮ روي آن ﻣﺪل‪.‬‬ ‫ﻋﻤﻠﻴﺎت ﻣﺠﻤﻮﻋﻪ‬ ‫–‬
‫اﺷﺘﺮاك و ﺗﻔﺎﺿﻞ‪.‬‬
‫اﺟﺘﻤﺎع‪ ،‬اﺷ اك‬
‫ﻋﻤﻠﻴﺎت ا ﺎ‬
‫ﻫﻤﺮاه ﻠ ﺎت‬
‫اﻋﺪاد ﺻﺤﻴﺢ ﺑﻪ ا‬
‫ﻣﺜﺎل‪ :‬ﻣﺠﻤﻮﻋﻪ ااي از ا ﺪا‬
‫ﺜﺎل‬ ‫–‬ ‫ﻛﺮدن ﻣﺠﻤﻮﻋﻪﻪ‬
‫ﺗﺗﻬﻲ ﻛ ن‬ ‫‪.11‬‬

‫ﻣﻘﺎﻳﺴﻪ ﺑﺎ روﻳﻪ ﻫﺎ‪:‬‬ ‫•‬ ‫ﺑﺮرﺳﻲ ﺗﻌﻠﻖ ﻳﻚ ﻋﻨﺼﺮ ﺑﻪ ﻣﺠﻤﻮﻋﻪ‬ ‫‪.2‬‬


‫ﻋﻨﺼﺮ ﺟﺪﻳﺪ ﺑﻪ ﻣﺠ ﻋﻪ‬
‫ﻣﺠﻤﻮﻋﻪ‬ ‫ﻧﻤﻮدن ﻳﻚ ﻋﻨﺼ‬
‫اﺿﺎﻓﻪ ﻧ دن‬ ‫‪.33‬‬
‫ﺗﻌﻤﻴﻢ اﻧﻮاع داده اي اوﻟﻴﻪ )اﻋﺪاد ﺻﺤﻴﺢ‪ ،‬اﻋﺸﺎري‪ ،‬ﻛﺎرارﻛﺘﺮﻫﺎ و ‪(...‬‬ ‫–‬
‫ﻣﺮﺑﻮط ﺑﺑﻪ‬
‫ﻋﻤﻠﻴﺎت ﺮﺑﻮ‬
‫ﻲ ﻴ‬ ‫ﻮع و ﺗﻤﺎﻣﻲ‬
‫ﺮﻳﻒ ﻧﻮع‬
‫ﻮري ﻛﻪ ﺗﻌﺮﻳﻒ‬
‫ي ﺑﺑﻪ ﻃﻮري‬ ‫ﻮع داده اي‬ ‫ﻛﭙﺴﻮﻟﻪ ﺳﺎزي‬
‫زي ﻧﻮع‬ ‫ﭙ ﻮ‬ ‫–‬
‫ﮔﺮاف )‪(GRAPH‬‬
‫ﮔ اف‬ ‫•‬
‫آن ﻣﻲ ﺗﻮاﻧﺪ در ﻳﻚ ﺑﺨﺶ از ﺑﺮﻧﺎﻣﻪ در ﻛﻨﺎر ﻳﻜﺪﻳﮕﺮ ﻗﺮار ﺑﮕﻴﺮﻧﺪ‪.‬‬
‫ﻋﻤﻠﻴﺎت ﮔﺮاف‪:‬‬ ‫–‬
‫ﻣﺰاﻳﺎي ‪:ADT‬‬
‫ﺰا ﺎي‬ ‫•‬ ‫دﺳﺘﺮﺳﻲ ﺑﻪ رﺋﻮس ﮔﺮاف‬ ‫‪.1‬‬
‫ﺳﺎدﮔﻲ در ﺗﻐﻴﻴﺮ ﭘﻴﺎده ﺳﺎزي آن‬ ‫–‬ ‫ﺑﺮرﺳﻲ ﻣﺠﺎورت دو رأس‬ ‫‪.2‬‬
‫ﺧﺎرج از ﺑﺨﺸﻲ ﻛﻪ ﻋﻤﻠﻴﺎت ‪ ADT‬ﺗﻌﺮﻳﻒ ﺷﺪه اﺳﺖ‪ ،‬ﻣﻲ ﺗﻮان ﺑﺎ ‪ ADT‬ﺑﻪ‬ ‫–‬ ‫رﻧﮓ رﺋﻮس‬
‫ﺗﺸﺨﻴﺺ ﮓ‬ ‫‪.3‬‬
‫ﻋﻨﻮان ﻳﻚ ﻧﻮع داده اي اوﻟﻴﻪ رﻓﺘﺎر ﻧﻤﻮد‪ .‬ﻳﻌﻨﻲ ﺗﻮﺟﻬﻲ ﺑﻪ ﭘﻴﺎده ﺳﺎزي آن ﻧﺪارﻳﻢ‪.‬‬ ‫رﻧﮓ زدن رﺋﻮس‬ ‫‪.4‬‬

‫‪N. Razavi -DS course - 2005‬‬ ‫‪١٩‬‬ ‫‪N. Razavi -DS course - 2005‬‬ ‫‪٢٠‬‬
‫ﻧﻮع داده اي‪ ،‬ﺳﺎﺧﺘﻤﺎن داده‪ADT ،‬‬ ‫اﺷﺎره ﮔﺮﻫﺎ‬
‫اﺷﺎره ﮔﺮ واﻗﻌﻲ )‪ :(pointer‬ﻣﺘﻐﻴﺮي ﻛﻪ ﻣﻘﺪار آن ﺣﺎوي آدرس ﻣﺘﻐﻴﺮ دﻳﮕﺮي‬ ‫•‬
‫ﻧﻮع داده اي )‪ :(Data type‬ﻳﻚ ﻧﻮع داده اي از ﻳﻚ ﻣﺘﻐﻴﺮ‪ ،‬ﻣﺠﻤﻮﻋﻪ‬ ‫•‬ ‫ﻲ ﺑﺑﺎﺷﺪ‪.‬‬
‫ﻣﻲ‬
‫ﻣﻘﺎدﻳﺮي اﺳﺖ ﻛﻪ ﻣﺘﻐﻴﺮ ﻣﻲ ﺗﻮاﻧﺪ اﺧﺘﻴﺎر ﻛﻨﺪ‪.‬‬ ‫اﺷﺎره ﮔﺮ اﻧﺪﻳﺴﻲ )‪ :(cursor‬ﻳﻚ ﻣﺘﻐﻴﺮ ﺻﺤﻴﺢ ﻛﻪ از آن ﺑﻪ ﻋﻨﻮان اﺷﺎره ﮔﺮ ﺑﻪ آراﻳﻪ‬ ‫•‬
‫ﺷﻮد‪.‬‬
‫ﻲ ﻮ‬‫اﺳﺘﻔﺎده ﻣﻲ‬
‫اﺧﺘﻴﺎر ﻛﻛﻨﺪ‪.‬‬
‫را ا ﺎ‬‫‪ false‬ا‬
‫‪ true‬و ‪f l‬‬
‫ﻣﻘﺎدﻳﺮ ‪t‬‬
‫ﺗﻮاﻧﺪ ﻘﺎ‬
‫ﺑﻮﻟﻲ ﻣﻲ ا‬
‫ﻣﺜﺎل‪ :‬ﻣﺘﻐﻴﺮ ﻟ‬
‫ﺎل‬ ‫–‬
‫ﻣﺜﺎل‪:‬‬ ‫•‬
‫‪ :ADT‬ﻳﻚ ﻣﺪل رﻳﺎﺿﻲ‪ ،‬ﺑﻪ ﻫﻤﺮاه ﻋﻤﻠﻴﺎت ﻣﺘﻌﺪد ﺗﻌﺮﻳﻒ ﺷﺪه روي‬ ‫•‬
‫ﻣﺪل‬ ‫‪h d‬‬
‫‪header‬‬ ‫‪4‬‬ ‫‪2‬‬

‫ﻣﺜﺎل‪ :‬ﭘﺸﺘﻪ )‪(Stack‬‬ ‫–‬


‫‪type‬‬ ‫‪type‬‬
‫‪1‬‬ ‫‪1.2‬‬ ‫‪3‬‬
‫ﺳﺎﺧﺘﻤﺎن داده )‪ :(Data structure‬ﻣﺠﻤﻮﻋﻪ اي از ﻣﺘﻐﻴﺮﻫﺎ‪ ،‬ﻛﻪ ﻣﻤﻜﻦ‬ ‫•‬ ‫‪reclist = array[1..4] of record‬‬
‫‪recordtype = record‬‬ ‫‪2‬‬ ‫‪3.4‬‬ ‫‪0‬‬
‫ﻳﻜﺪﻳﮕﺮ‬
‫ﻣﺨﺘﻠﻔﻲ ﺑﻪ ﻜﺪ ﮕ‬
‫ﻫﺎي ﺨ ﻠﻔ‬ ‫روش ﺎ‬
‫ﺑﺎﺷﻨﺪ و ﺑﻪ ش‬
‫ﻣﺘﻔﺎوﺗﻲ ﺎﺷﻨﺪ‬
‫داده ااي ﻔﺎ ﺗ‬
‫اﻧﻮاع ا‬
‫اﺳﺖ از اﻧ ا‬
‫ا ﺖ‬ ‫;‪data: real‬‬
‫;‪cursor: integer‬‬ ‫‪3‬‬ ‫‪5.6‬‬ ‫‪2‬‬
‫ﻣﺘﺼﻞ ﺷﺪه اﻧﺪ‪.‬‬ ‫‪pptr: ^recordtype‬‬
‫‪yp‬‬ ‫‪next: integer‬‬
‫‪4‬‬ ‫‪78‬‬
‫‪7.8‬‬ ‫‪1‬‬
‫ﻣﺜﺎل‪ :‬آراﻳﻪ‪ ،‬رﻛﻮرد‪ ،‬ﻓﺎﻳﻞ‬ ‫–‬ ‫‪end‬‬ ‫‪end‬‬
‫‪data‬‬ ‫‪next‬‬
‫‪reclist‬‬
‫‪N. Razavi -DS course - 2005‬‬ ‫‪٢١‬‬ ‫‪N. Razavi -DS course - 2005‬‬ ‫‪٢٢‬‬

You might also like