"Ярусты" граф
Біз ең қысқа жолды табу алгоритмін 1-суреттегі графқа қолданылатындай сипаттадық. Нақтылы бір мысалға жазылған бұл алгоритмді кез келген графқа қолдануға болатындай алгоритмнің сипаттамасын келтірейік: Al1 алгоритмін графтың берілген екі төбесін қосатын ең қысқа маршрутын табу үшін сипаттаймыз. Бұл алгоритмнің негізіне берілген графтың бір төбесінен шығатын ең қысқа жолдардың графы деп қарастыруға болатын ярустық граф құру алгоритмі жатады. Сондықтан алдымен ең қысқа жолдардан құралған ішкі граф құратын Al2 алгоритмін сипаттайық:
Al2 алгоритмі (ең қысқа жолдар графын құрады).
Басы. Бағытталған G графы және оның бір х0V(G) төбесі берілген. G графын кіретін және шығатын аймақтар {O+(х), O-(х)|xV(G)} үйірімен берейік.
1. L:={x0}, M:=, Г(x0):=, h(x0):=0, t:=0;
Мұндағы L мәндері құрылғалы тұрған ағымдағы яруста жатқан төбелер жиыны болатын айнымалы; М-мәндері құрылғалы тұрған ағымдағы ярустың алдындағы яруста орналасқан төбелер жиыны болатын айнымалы; Г әрбір х төбесіне құрылатын графтың х–ке апаратын төбелер жиынын белгілейтін функция; h xo төбесінен x төбесіне дейінгі аралықты көрсететін натурал санды кез келген x төбесіне белгілейтін функция; t- h функциясын есептеуге қолданылатын бүтін мәнді айнымалы t.
2. M:=MUL;
3. Әрбір zL, t:=t+1; L:={O-(x)|xL}\M, Г(z):=O+(z)М, Г(z):=t+1;
4. Тексеру: L=. Егер дұрыс болса 2 пунктке көш.
Соңы. М, h және Г баспаға бер.
Мұнда М xo төбесінен шығатын ең қысқа жолдар графының төбелер жиыны; Г(х) ең қысқа жолдар графынан шығатын х төбесінің аймағы.
h(х)–G графындағы ρ(х0, х) арақашықтығы(х пен у төбесінің арақаш-ықтығы деп х пен у-ті қосатын ең қысқа жолды айтады).
1-кесте
X
|
800
|
350
|
503
|
053
|
323
|
530
|
620
|
233
|
602
|
251
|
152
|
701
|
143
|
710
|
440
|
413
|
Г
|
|
800
|
800
|
350
|
350
|
503
|
323
|
530
|
620
|
233
|
602
|
251
|
152
|
701
|
143
|
710
|
H
|
0
|
1
|
1
|
2
|
2
|
2
|
3
|
3
|
4
|
4
|
5
|
5
|
6
|
6
|
7
|
7
|
AL2 алгоритмін х0-800 төбесімен G басқатырғыш графына қолданғанда 26 қадам жүргізіледі, оған қоса М айнымалысының ең соңғы мәні Г және h функцияларының мәндерімен берілген 1-кестеде көрсетілген жиын болады. 1-кестеде шын мәнінде х0-800 төбесінен шығатын ең қысқа жолдар графы көрсетілген. (Г(х) бұл графта х төбесінің кір етін аймағы).
х0 төбесінен у0 төбесіне жеткізетін ең қысқа жолды табу үшін кестеден Г(у0) мәнін табамыз және одан қандай да бір у1Г(у0) төбесін аламыз. у1 төбесі үшін Г(у1) мәнін табамыз да, одан қандай да бір у2Г(у1) төбесін аламыз. Осылай жалғастыра келе х0 төбесіне келеміз ( бұл төбе үшін Г(х0)=0). Мысалы, у0=440 алсақ мынадай тізбек аламыз: у0=440, у1=143Г(440), у2 =152Г(143), у3=602Г(143), у4=620Г(602), у5=323Г(620), у6=350Г(323), у7=800, Г(800)=0. Демек, 800 төбесінен 440 төбесіне жеткізетін ең қысқа маршрут: 800, 350, 323, 620, 602, 152, 143, 440.
Графтың екі төбесінің арасындағы ең қысқа жолды анықтайтын Al1 алгоритмін Al2 алгоритмінен жеңіл шығарып алуға болады.
Al1 алгоритмі (графтың екі төбесінің арасындағы ең қысқа жолды анықтайды)
Басы. G бағытталған граф, х0, у0 оның екі төбесі
Al2 алгоритмін (G, х0) жұбына қолдану.
у:=у0, u:u=у0.
Мұнда құрылып жатқан ең қысқа жолдың ағымдағы төбесі у-тің мәні болады.
Г(у) табу және Г(у)=0 екендігін тексеру. Егер шарт дұрыс болса, «х0-ден у0-ге апаратын жол жоқ» деген хабар баспаға шықсын.
x0Г(у). екендігін тексеру. Егер дұрыс болса, соңына көш.
Қандай да бір zГ(у) төбесін алу. Анық болу үшін Г(у) тізіміндегі бірінші төбені аламыз да у:=z және u:=z,u 3 қадамға көш.
Мұндағы z,u z-ті u тізбегінің басына қосқандағы нәтижені білдіреді.
Соңы. U тізбегін баспаға шығару.
Негізгі әдебиет: [161-180]; 2[108-114] .
Қосымша әдебиет: 7[88-130] .
Бақылау сұрақтары:
1. Маршруттың, шынжырдың, қарапайым шынжырдың, тұйық мар-шруттың, циклдың, қарапайым циклдың анықтамаларын беріңіз.
2. Маршрут ұзындығы не?
3. Қандай граф байланысты деп аталады?
4. Граф төбелерінің арасындағы ұзындығы к-ға тең маршруттың бар екендігін қалай анықтауға болады?
5. Графтың екі төбесін қосатын ең қысқа жолды табудың алгоритмі.
14–дәріс тақырыбы. Эйлер және Гамильтон циклдары (2 сағат)
Дәріс конспектісі: Графтар теориясына негіз болған есептердің бірі Кенигсберг көпірлері туралы есеп. 1-Суретте Леонард Эйлердің тұсындағы(17 ғасыр) XVII ғасырдағы Кенигсберг қаласының картасы салынған. Қала Прегель өзенінің екі жақ жағалауында және 2 аралда. орналасқан Аралдар өзара және жағалаулармен 7 көпірмен жалғасқан. Кенигсберг тұрғындарының арасында сол кезде Кенигсберг көпірлері деп аталатын есеп кең тараған:
Есеп. Үйден шығып әр көпірмен бір рет қана жүріп үйге қайтып келуге болама ма деген сұрақ туады?
3-сурет
Бұл есеп үшін көпірлерден өтудің маңызы бар. Сондықтан көпірлердің орналасуын 2-суреттегі бағытталмаған мультиграфпен алмастыруға болады. Бұл графта Б, В төбелері өзеннің жағаларына, ал А, Г төбелері аралдар, ал мультиграфтың қабырғалары көпірлерге сәйкес келеді. Егер G графында оның барлық қабырғалары арқылы өтетін цикл табылса Кенигсберг туралы есеп шешілді деп есептеледі (Цикл деп бірде бір қабырға қайталанбайтын циклды маршрутты айтатынын еске саламыз). Демек графтар тілінде есептін қойылуы төмендегідей: Мультиграфта оның барлық қабырғалары болатындай цикл бар ма? Атақты ғалым-математик Л. Эйлер байланысты, бағытталмаған мультиграфта оның барлық қабырғалары болатындай цикл болудың шартын анықтап дәлелдеп берді.
4-сурет
Теорема Байланысты бағытталмаған мультиграфтың әр төбесінің дәрежесі жұп сан болса ғана Эйлер циклы болады.
Анықтама. Мультиграфтың барлық қабырғалары болатын цикл Эйлер циклы деп, ал Эйлер циклы бар граф Эйлер графы деп аталады. Жоғардағы суреттегі мультиграфта Эйлер циклы жоқ, себебі онда дәрежесі тақ төбе бар. Айталық ондай цикл бар деп жориық. Олай болғанда бұл циклдың бойымен жүре отыра графтың кез келген төбесіне одан шығу қанша болса сонша рет кіреміз. Демек, G графының әр төбесінің дәрежесі жұп болуы керек. G графында керісінше барлық төбелер тақ дәрежелі.
Бұл тұжырым кез келген бағытталған G графына да жарамды. Сонымен бағытталмаған G графында оның барлық қабырғалары арқылы өтетін цикл бар болу үшін G графының төбелерінің дәрежесі жұп болуы қажетті.
Анықтама. Бағытталмаған (бағытталған) G графындағы цикл оның барлық қабырғалары арқылы өтсе, ол- Эйлер циклы деп аталады. Бағытталмаған графта Эйлер циклы бар болу үшін бұл графтың байланысты болуы қажетті.
Анықтама. Кез келген х,уV(G) төбелерін қосатын жол бар болса бағытталмаған G графы байланысты граф деп аталады.
Анықтама. Егер С циклы Бағытталмаған G графының барлық қабырғалары арқылы өтетін болса, кез-келген х,уV(G) төбелері үшін C циклының х төбесінен у төбесіне апаратын C(x,y) кесіндісі х-тен у-ке апаратын жол болып табылады. Олай болса G байланысты. Эйлер циклының бар болуы үшін графтың дәрежелерінің жұп болуы және оған қоса графтың байланысты болуы жеткілікті екен.
Эйлер теоремасы. Бағытталмаған графта Эйлер циклы болу үшін оның байланысты болуы және оның барлық дәрежелерінің жұп болуы қажетті және жеткілікті.
Эйлер теоремасын шамалы өзгеріспен бағытталған графтарға да қолдануға болады. Ол үшін бағытталған графтардың да байланысты болу ұғымын енгізу керек.
Доғаларының бағыттарын алып тастағаннан кейінгі алынған бағытталмаған G графы байланысты болса, бағытталған °G графы байланысты деп аталады.
Теорема. Бағытталған G графында Эйлер циклы болу үшін оның әр төбесіне кіретін дәрежемен шығатын дәрежелердің бірдей болуы қажетті және жеткілікті. дәр.+(х) = дәр.- (х) барлық xV(G).
Байланысты және тиелген бағытталмаған графтағы белгіленген V0 және Vn төбелерін қосатын ең қысқа жолды іздеуді жүзеге асыратын Форд алгоритмі.
V0 төбесіне λ0 таңбасы беріледі де, қалған төбелердің таңбалары λ=∞V0 болады.
(Vi, Vj) қабырғаларының ішінен λj – λi>L((Vi, Vj)) орындалатындай қабырғалар ізделеді және олардың λj индекстері λj'=λi+L((Vi, Vj )) алмастырылады. Индекстрді өзгерту процесі одан әрі λj таңбасын азайту мүмкіндігі болмайтын бірде бір қабырға қалмағанша жүргізіледі. Нәтижесінде әр төбенің таңбасы осы төбенің V0 төбесіне дейінгі ең қысқа қашықтықты көрсетеді. Ең қысқа жолдың өзін табу үшін Vn төбесінен екі жағындағы төбелердің таңбаларының айырымы қабырғаның ұзындығына тең қабырғалардың бойымен қозғалу қажет.
Гамильтон циклдары. Гамильтон циклдары туралы есептің интерпритациясы ретінде ең көп тараған коммивояжер туралы есепті қарастыруға болады.
Коммивояжер аралайтын бірнеше қалалардың арақашықтықтары белгілі.
Барлық қалаларда бір реттен ғана болып алғашқы шыққан қаласына қайтып келетін маршрутты табу керек. Егер мұндай маршруттар бірнешеу болса, олардың ең қысқасын табу керек. Мұндай есептер іс жүзінде жиі кездеседі, мысал үшін өндіріс өнімдерін сауда орталықтарына ең қысқа жолмен жеткізу есебі.
Мұндай есептерді шешудің жалпы ортақ теоремалары мен көлемі жөнінен шағын, әрі тиімді алгоритмдердің жоқтығы есепті шешуде қиындықтар туғызады.
Анықтама. Айталық G(V,E) байланысты бағытталмаған граф. G графының барлық төбелері арқылы өтетін, басталуы мен аяқталуы әр түрлі төбелерде болатын қарапайым цикл Гамильтон циклы деп аталады.Графтарда Гамильтон циклдары мен шынжырлары бар болудың жеткілікті шартын келтірейік. Айталық дәр. v–vV төбесінің дәрежесі болсын.
Теорема. Егер G (V, E), мұндағы |V|=n графында кез келген төбелер vi және vj жұбтары үшін дәр.vi +дәр.vj≥n-1, орындалса, графта гамильтон шынжыры бар, ал егер дәр.vi +дәр.vj≥n немесе дәр.vi≥n/2 графта Гамильтон циклы бар.
Негізгі әдебиет: 2 [20-22]; 3[108-144].
Қосымша әдебиет: 7[88-130] .
Бақылау сұрақтары:
Цикл деп нені айтамыз?
Қандай граф Эйлер графы деп аталады?
Графтың Эйлер графы болуының жеткілікті және қажетті шартын атаңыз?
Гамильтон шынжыры, Гамильтон циклы дегендер не?
Коммивояжер есебін шешудің қандай алгоритмі белгілі?
15-дәріс. Транспорттық желілер. (2 сағат)
Дәріс конспектісі
Анықтама. Төменде аталған шарттар: а) ілгек жоқ; b) шығу төбесі (бірде бір доға кірмейтін, тек шығатын ғана төбелері бар) бар болса; с) кіру төбесі (бірде бір доға шықпайтын, тек кіру төбелері ғана бар) бар болса; d) доғалардың Е жиынындағы әр доғада мәні өткізу қабілеті деп аталатын теріс емес бүтін мәнді с(е) функциясы анықталған болса; бағытталған, байланысты G(E, V) графы транспорт желісі деп аталады.
Транспорт желісінің шығу,кіру деп аталатын төбелерден басқа төбелері аралық төбелер деп аталады. 1-суретте v0-басталу төбесі, z-аяқталу төбесі, v1, v2, v3, v4-аралық төбелер, ал әр доғада өткізу қабілеті көрсетілген.
Анықтама. Айталық, желінің v V төбесінен қосылатын, а -төбесінен шығатын доғалар жиыны болсын. G(V,E) желісінің Е доғалар жиынында берілген бүтін мәнді теріс емес φ(е) функциясы а), b), c) шарттарын қанағаттандырса ағын деп аталады. φ(е) функциясының мәнін х төбесінен у төбесіне баратын v(x,y) доғасымен уақыт бірлігінде өтетеін заттың саны деп қарауға болады. Бұл сан доғаның өткізу қабілетінен аспайды. Желінің басталатын және аяқталатын төбелерінен басқа төбелерде келетін заттардың саны одан шығатын заттарға тең болатындықтан еш жерде олар жиналып қалмайды
a) ,
vv0, vz;
b) (e)c(e);
c)
5-сурет
Достарыңызбен бөлісу: |