Структуре података и алгоритми

Водич за структуру података графикона

Водич за структуру података графикона
У рачунарству, граф је скуп чворова повезаних везама. Главна разлика између дрвета и графа је у томе што дрво има један коренски чвор, док граф има више од једног коренског чвора. Требали бисте већ имати основно знање о структури података стабла пре доласка овде, јер ће се тамошњи концепти овде користити са мало или нимало објашњења. Ако немате то знање, прочитајте туториал под називом Водич за структуру података о дрвету за почетнике на линку хттпс: // линукхинт.цом / трее_дата_струцтуре_туториал_бегиннерс /.

Чвор у графу назива се теменом (множина - темена). Понекад се још назива чвор; може се назвати и тачком. Веза у графикону назива се ивица. Понекад се још назива везом; може се назвати и линијом.

Графикон са многим карактеристикама

Ова слика приказује графикон са многим карактеристикама:

Кружнице (дискови) су темена. Свака права линија или крива линија или петља је ивица.

Карактеристике графикона

Вертек

Врх је објекат. То може бити кућа; то може бити особа; то може бити апстрактна именица; то може бити било који предмет којег се можете сјетити.

Ивица

Ивица је веза (релација) између два темена; веза може бити апстрактна.

Лооп

Петља је ивица која повезује врх са собом.

Арров Едге

Размотримо двоје људи: Јована и Петра. Ако Јован позајмљује Петру 100 долара и ако су Јован и Петар врхови, тада ће ивица позајмљивања бити усмерена према Петру. Ако оба партнера забораве да Петар дугује Џону, а Петар позајмљује Џону 100 долара, на другом крају исте ивице стрелица ће бити усмерена ка Џону. Ако би Петер позајмио Јохн-у само 75, а не 100 $, тада би друга ивица повезала Петра са Јохн-ом. Врх стрелице ове друге ивице биће усмерен ка Џону. У другом случају, постоје две ивице, са по једном главом стрелице, окренуте у супротним смеровима.

Врх на који ивица упућује је врх главе за ту ивицу. Врх из којег одлази ивица је репни врх.

Инцидент

Ивица повезује два темена. За ивицу се каже да пада на било који врх. На ивици не треба да има врх стрелице. Два врха су позната као крајње тачке ивице. Могуће је имати граф где врх не припада ниједној ивици, али то неће бити разматрано у овом упутству.

Неусмерени графикон

Ивица може бити стрелица, или не може. Графикон где ниједна ивица није стрелица је усмерени граф. Ивица може бити представљена правом линијом или кривином или петљом.

Усмерени графикон

Графикон где је свака ивица стрелица (смер) је усмерени граф. Ивица стрелице може бити представљена правом линијом са врхом стрелице или кривином са врхом стрелице или петљом са врхом стрелице.

Одсуство правца на ивици неусмереног графа значи да је свака ивица неусмереног графа двосмерна.

Степен темена

Број ивица које падају на врх је степен темена. Петља има два инцидента на врху, па се петља броји два пута.

Редослед графикона

Редослед графикона је број темена у графикону.

Мултиграпх

Мултиграф је граф, где за неке парове темена постоји више ивица. Неусмерени мултиграф је такав граф у коме ивице немају смер (нису стрелице). Усмерени мултиграф је онај где је свака ивица стрелица, а за парове темена који имају више од једне стрелице, један врх је реп тих стрелица, а други врх је глава истих стрелица. Следећи дијаграм приказује неусмерени мултиграф:

Више ивица (тј.е. више ивица) за пар темена називају се и паралелне ивице.

Тоболац

Тоболац је мултиграф који омогућава петље (једну или више петљи). Неки мултиграфи не дозвољавају петље.

Симпле Грапх

Једноставан граф је граф где ниједна два пара темена немају више ивица. Петље нису дозвољене у једноставном графикону.

Празан графикон

Празан граф је граф без темена и тако без ивица.

Мешовити графикон

Мешовити граф је граф где су неке ивице стрелице, а друге нису; другим речима: неке ивице имају правце, а друге нису усмерене.

Пондерисани графикон

Могуће је имати граф у коме је свакој ивици додељен број, познат као тежина. Неке ивице имају исти број, али бројеви су углавном различити. Такав граф назива се пондерисани граф. Бројеви за одређени графикон могу представљати дужине или трошкове (цене) или неку величину, у зависности од проблема.

Непристајање и неслагање

Речник, степен и степен су применљиви само на усмерени граф. Графикон може или не мора бити мултиграф. Графикон може имати или не имати петље.

Број врхова стрелица повезаних са врхом је степен тог врха. Стрела са једним врхом стрелице има завршетак главе и реп. Број репова повезаних са врхом је степен тог врха.

Напомена: Графикон са више ивица за пар темена, где су више ивица у супротним смеровима, није обрађено у овом упутству.

Софтверско представљање графа

Графикон се може представити у софтверу онако како је нацртан на дијаграму. Графикон такође може бити представљен у софтверу математичком матрицом (дводимензионални низ). Једна од таквих матрица назива се матрица суседности.

Матрица суседства

Матрица суседности је квадратна матрица. Наслови редова су сви врхови, написани узлазним редоследом. Наслови колона су и даље исти врхови, написани узлазним редоследом. Бројање редова или колона матрице почиње од 1, а не од нуле као код низова. Када се идентификује елемент у матрици, број реда записује се прво пре броја колоне.

За неусмерени граф, сваки унос (елемент) у матрици суседности је број ивица које повезују два одговарајућа темена. Петљу треба бројати два пута. За усмерени граф, сваки унос у матрици суседности је или број ивица које напуштају врх реда и улазе у одговарајући врх колоне или је број ивица које напуштају врх колоне и улазе у одговарајући врх реда. Избор је на избору програмера. У овој ситуацији (у сваком случају), петљу и даље треба бројати једном.

Напомена: Графикон је дијаграм сам по себи структура података. Матрица суседности је такође сама по себи структура података.

Неусмерени графикон и матрица суседства

Следећи дијаграми приказују неусмерени графикон и одговарајућу матрицу суседности:

Водећа дијагонала матрице је дијагонала од горњег левог до доњег десног. Неусмерена матрица је симетрична у односу на водећу дијагоналу. Унос матрице за ред А и колону Ц је 1, што значи да постоји једна ивица која повезује врх А и врх Ц. Унос матрице за ред Ц и колону Б је 3, што значи да постоје 3 ивице које повезују врх Ц и врх Б. Остали уноси су слично објашњени.

Збир уноса за ред даје број ивица (степен) за одговарајући врх. Збир уноса за ред А је 2, што значи да су 2 ивице повезане са теменом А. Збир уноса за ред Б је 6, што значи да је 6 ивица повезано са теменом Б. Остали уноси су слично објашњени.

Усмерени графикон и матрица суседства

Следећи дијаграми показују усмерени граф и одговарајућу матрицу суседности:

Матрица суседности за усмерени граф није нужно симетрична у односу на водећу дијагоналу. Унос матрице за ред А и колону Ц је 1, што значи да једна ивица прелази из темена А у врх Ц. Унос матрице за ред Ц и колону Б је 3, што значи да 3 ивице одлазе из темена Ц у врх Б. Остали уноси су слично објашњени.

Збир уноса за колону даје независно за врх (ступац). Збир уноса за ред даје степен за врх (реда). Збир уноса за колону А је 1, што значи да је једна ивица усмерена на врх А. Збир уноса за ред Б је 2, што значи да 2 ивице одлазе из темена Б. Остали уноси су слично објашњени.

Графичке операције

Структура података, попут графа, састоји се од скупа вредности података или скупа објеката, плус однос између објеката, плус операције (функције) између објеката. Односи на графикону означени су ивицама. На томе, графикон треба да има најмање следеће операције:

суседни (Г, к, и)

Г значи граф. Ова операција проверава да ли ивица повезује темена к и темена и. Вредност и положај уноса у матрици указују на везу ивице (и њен тип).

суседи (Г, к)

Ова операција враћа листу свих темена који су директно повезани са теменом к. Вредност и положај уноса у матрици указују на везу ивице.

ремове_вертек (Г, к)

Ова операција уклања врх, к са графика. Ако врх није имао ивицу, нема проблема. Међутим, ако је врх имао везе, онда би требало уклонити и везе (ивице). Вредност и положај уноса у матрици указују на присуство одређеног темена. Ако се врх уклони, матрица се мора прилагодити.

адд_вертек (Г, к)

Ово додаје врх, к без додавања ивица, или замењује врх који је имао ивице, али је уклоњен. Вредност и положај уноса у матрици указују на присуство одређеног темена. Ако се дода темен, матрица се мора прилагодити.

адд_едге (Г, к, и)

Ова операција додаје нову ивицу између темена к и темена и ако ивица није била тамо. Вредност и положај уноса у матрици указују на присуство одређене ивице. Ако се дода ивица, матрица се мора прилагодити.

ремове_едге (Г, к, и)

Ова операција би уклонила ивицу између темена к и темена и да је ивица тамо. Вредност и положај уноса у матрици указују на присуство одређене ивице. Ако се ивица уклони, матрица се мора прилагодити.

гет_вертек_валуе (Г, к)

Ова операција враћа вредност, в повезану са теменом, к. Да бисте то постигли, потребан вам је скуп подскупова снаге за вертексне ознаке и њихове вредности.

сет_вертек_валуе (Г, к, в)

Ова операција даје нову вредност, в за вредност повезану са теменом, к. Да бисте то постигли, потребан вам је скуп подскупова снаге за вертексне ознаке и њихове вредности.

Неки графикони такође придружују вредности својим ивицама. Такви графикони захтевају следеће додатне операције:

гет_едге_валуе (Г, к, и)

Ова операција враћа вредност, в повезану са ивицом, (к, и). Да бисте то постигли, потребан вам је скуп подскупова снаге за ивице и њихове вредности.

сет_едге_валуе (Г, к, и, в)

Ова операција даје нову вредност, в за вредност повезану са ивицом, (к, и). Да бисте то постигли, потребан вам је скуп подскупова снаге за ивице и њихове вредности.

Закључак

Графикон је скуп темена повезаних ивицама. Графикон може бити усмерен или усмерен. Ивице могу бити неусмерене или усмерене. Петље могу бити присутне или одсутне на графикону. Оно што бисте следећи требали научити је подешавање, подешавање снаге и мултисет у вези са графиконима. Након тога, требали бисте научити различите типове графика, као што су оријентисани граф, редовни граф, комплетни граф, дводелни граф, турнирски граф, граф мреже протока итд.

Цхрис

О аутору

Хрисантус Форцха

Откривач интеграције математике из првих принципа и сродних серија. Магистар техничког образовања, специјализован за електронику и рачунарски софтвер. Дипл. Електроника. Такође имам знање и искуство на мастер нивоу рачунарства и телекомуникација. Од 20.000 писаца, био сам 37. најбољи писац у девартицлесу.цом. На овим пољима радим више од 10 година.

Погледајте све постове
Најбоље игре за ручно праћење
Оцулус Куест је недавно представио сјајну идеју ручног праћења без контролера. Са све већим бројем игара и активности које извршавају подршку формално...
Како приказати ОСД прекривач у целом екрану Линук апликација и игара
Играње игара преко целог екрана или коришћење апликација у режиму целог екрана без ометања може вам одсећи релевантне системске информације видљиве на...
Топ 5 карата за хватање игара
Сви смо видели и волели стримовање играња на ИоуТубе-у. ПевДиеПие, Јакесептицие и Маркиплиер само су неки од најбољих играча који су зарадили милионе ...