Оқытушы пәнінің ОҚУ-Әдістемелік кешені



жүктеу 5,01 Kb.
Pdf просмотр
бет32/45
Дата23.05.2018
өлшемі5,01 Kb.
#16673
1   ...   28   29   30   31   32   33   34   35   ...   45

29-сур. Керуші ағаш құрудың екі әдісі 
 
Тереңдікке  және  кеңдікке  іздеу  процедураларын  керуші  ағаштарды 
табу  үшін  қолдануға  болады.  Екі  жағдайда  да v шыңынан u  шыңына  жету 
ағашқа {v,u} қабырғасын қосуға әкеледі. 
Байланысқан  графтың  керуші  ағашын  тереңдікке  іздеу  әдісімен  табу 
алгоритмін  қарастырайық. G=E>  бастапқы  графы  ТІЗІМ[v], v€V 
инциденттілік  тізімдерімен  берілген.  Алгоритмді WGD(v) процедурасы 
арқылы жүзеге асырамыз: 
1  PROCEDURE WGD(v); 
{ ЖАҢА, ТІЗІМ, Т (бұтақтар жиынтығы) айнымалылары- глобалды} 
2   BEGIN ЖАҢА [v] := false; 
3   FOR u

 ТІЗІМ [v] DO 
4    IF ЖАҢА [u] THEN BEGIN 
5        Т := Т  {v, u}; {жаңа бұтақ қосу} 

6       WGD(u) 
7    END 
8   END {WGD}; 
Негізгі бағдарлама 
1  BEGIN 
2     FOR u

V DO ЖАҢА [u] := true; { инициализациялау } 
3     Т :=  ; 

4     WGD( r ) {г – ерікті шың } 
5 END 
Мұндай  алгоритм  ерікті  байланысқан  графтың  ерікті  ағашын  дұрыс 
құратындығын дәлелдеуге болады. Бұл үш фактордан шығады: 
1) Т жиынтығына жаңа {v, u} (5 жол WGD) бұтағын қосу сәтінде Т>  ағашта r-дан  v-ға апаратын жол болады. Сөйтіп, алгоритм байланысқан 
граф құрады; 
2) Т жиынтығына қосылатын әрбір жаңа {v, u} бұтағы қарастырылып 
кеткен v шыңын  жаңа u шыңымен  қосады.  Осыдан  құрылған   
графының  циклдері  болмайды. (Шындығында,  циклді  тұйықтайтын  соңғы 
бұтақ қарастырылып кеткен екі шыңды қосу керек); 
3)  тереңдікке  іздеудің  қасиетінен WGD бағдарламасы  байланысқан 
графтың барлық шыңдарын қарастыратыны шығады. 
Яғни,  біздің  алгоритм  бойынша  құрылған  графы G графының 
керуші ағашы болып табылады. Алгоритмді есептеу күрделілігі C(n+m) ретті 
болады, яғни тереңдікке іздеу сияқты. 
Біздің мысал үшін тереңдікке іздеу арқылы құрылған керуші ағаш 30,а-
сур.  көрсетілген.  Іздеу  басталатын  г  шыңы  ағаш  тамыры  болып  табылады.  
 ағашында ерікті шыңнан тамырына дейін бір жол бар екені анық. <V, 
T> ағашының түрлі екі v  және u  шыңдары үшін егер u шыңынан тамырға 
апаратын жолда v жатса, онда u  шыңы v  ұрпағы болады деп айтамыз. 


 
30-сур.  Тереңдікке  және  кеңдікке  іздеу  арқылы  құрылған 
керуші ағаштар 
 
Осы  сияқты  әдіспен  кеңдікке  іздеу  әдісін  қолданып,  керуші  ағаш 
құруға болады. Бұл әдісті іске асыратын алгоритмді былай жазуға болады: 
1   BEGIN 
2      FOR u

V DO ЖАҢА [u] := true; { инициализациялау } 
3      Т := 

; {осы уақытқа дейін табылған бұтақтар жиынтығы } 
4     КЕЗЕК := 

; КЕЗЕК <= г; 
5      ЖАҢА [г] := false; {r – керуші ағаштың тамыры} 
6     WHILE КЕЗЕК ≠ 

 DO BEGIN 
7       v <= КЕЗЕК; 
8       FOR u 

 ТІЗІМ [u] DO 
9         IF ЖАҢА [u] THEN BEGIN 
10            КЕЗЕК <=u; ЖАҢА [u] := false; Т := Т 

{v, u} 
11         
END 
12      END 
13   END 
Жоғарыда  жасалған  талдаулар  арқылы  берілген  алгоритм  ерікті 
байланысқан  граф  үшін  керуші  ағашты 0(n+m) қадам  ішінде,  яғни C(n+m) 
артық емесқадам ішінде құратындығын көрсетуге болады. 
30,6-суретте біздің мысал үшін кеңдікке іздеу әдісімен құрылған ағаш 
көрсетілген. 
Кеңдікке  іздеудің  айтылып  кеткен  артықшылықтары  келесі 
қорытындыға әкеліп соғады. 
- G =  ерікті  байланысқан  графы  үшін  кеңдікке  іздеу 
әдісімен  құрылған  керуші  ағаш  болсын.  Онда   v ерікті  шыңынан  г 
тамырына апаратын G графындағы v-дан  г –ге ең қысқа жол болады. 
Керуші  ағаштар  жайындағы  барлық  талдауларды  ерікті,  байланыты 
болуға  міндетті  емес  графтарға  қолдануға  болады. G ерікті  графының 
циклсіз  максималды  бағыныңқы  графы G графының  керуші  орманы  деп 
аталады. K байланыстылық  компоненті  бар  графтың  керуші  орманы  сол 


компоненттердің  керуші  ағаштарымен  анықталады,  яғни  оның n-k-1 
қабырғасы бар. 
Керуші ағашты табу мәселесімен графтан циклдердің фундаменталды 
жиынтығын табу мәселесі тығыз байланысты. 
 
 
Графтан  циклдердің  фундаменталды  жиынтығын 
табу 
 
Егер G =  графының  керуші ағашына е

Е\Т ерікті 
хордасын қоссақ, онда шыққан С =  бағыныңқы графында нақты 
бір  цикл  бар  (мұнда  цикл  деп  элементарлы  циклді  айтамыз.  Бұл  циклді  Се 
деп белгілейміз. С = {С
е
: е

Е \ Т} жиынтығын G графының фундаменталды 
жиынтығы ( керуші ағашына қатысты) деп атаймыз. "Фундаменталды" 
деп атауымыз G графының әрбір циклін G жиынтығының циклдерінен оңай 
алуға болатындығымен байланысты. 
Циклдердің  фундаменталды  жиынтығын  табудың  қолданбалы  мәні 
бар, мысалы, электр тізбектерінің анализі кезінде. Нақтырақ, берілген электр 
тізбегіне  сәйкес  графтың  әрбір  фундаменталды  цикліне  кернеуге  арналған 
Кирхгоф заңын сәйкестендіруге болады: циклдің бойымен түскен кернеулер 
қосындысы 0-ге тең. Циклдердің фундаменталды жиынтығын табу тізбектің 
математикалық сипаттамаларында тәуелсіз теңдеулерді көрсетуге мүмкіндік 
береді. 
Енді  циклдердің  фундаменталды  жиынтығын  табудың  қарапайым 
алгоритмін  сипаттайық.  Алгоритм  тереңдікке  іздеуге  негізделген  және 
керуші ағашты табудың рекурсивті алгоритміне аналогиялы құрылымға ие. 
Іздеу  прцесінде  кездескен  әрбір  жаңа  шың  СТЕК  кестесінде 
көрсетілген  стекке  орналастырылып,  қолданылғаннан  кейін  жойылады. 
Стекте  берілген  уақыт  моментінде  қарастырылып  жатқан v шыңынан 
басталып, тамырына апаратын шыңдар тізбегі орналасады. 
Сондықтан,  егер  біз  қарастырып  жатқан {v, и}  қабырғасы  циклді 
тұйықтаса  (яғни WGN[v] > WGN[u] > 0 b және стектің жоғарғы элементінің 
астында  орналасса),  онда u шыңы  стекте  орналасқан  және {v, u} 
қабырғасымен  тұйықталған  циклі  стектің v-ден  бастап, u шыңына  дейінгі 
элементтер тобымен көрсетілген. 
1  PROCEDURE 
ЦИКЛ
(
V
); 
{d, num, СТЕК, ТІЗІМ, WGN айнымалылары- глобалды} 
2  BEGIN d := d+1; CTEK[d] := v; num := num+1; WGN[ ] := num; 
3    FOR u 

 ТІЗІМ [v] DO 
4       IF WGN[u] 0 THEN цикл(г) 
5       ELSE IF (u 

 CTEK[d-l]) and (WGN[v] > WGN[u]) THEN {{v, 
u} қабырғасы жаңа циклді тұйықтайды) 
6            шыңдары бар циклді жазып алу 
7            CTEK[d], CTEK[d-l],.... СТЕК[с], мұнда СТЕК[с] = u 
8     d:=d-l {қолданылған v шыңы стектен жойылады } 
9   END (цикл}; 
Негізгі бағдарлама: 


жүктеу 5,01 Kb.

Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   45




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау