Типове графики в структурата на данните с примери

⚡ Умно обобщение

Графите в структурата на данните са нелинейни колекции от върхове и ребра, класифицирани в семейства като насочени, ненасочени, претеглени, циклични, ациклични, пълни, свързани, двуделни, Ойлерови и Хамилтънови графи, базирани на структура.

  • 📐 Определение: Граф G = (V, E) е нелинейна структура, където V е множеството от върхове, а E е множеството от ръбове, свързващи двойки върхове.
  • ➡️ Посока: Насочената графика използва стрелковидни ръбове с фиксиран източник и цел, докато неориентираната графика позволява двупосочно движение през всеки ръб.
  • Тегло: Претеглените графики придават числова цена на всеки ръб, докато непретеглените графики третират всички ръбове като връзки с еднаква цена.
  • 🔁 цикли: Цикличните графове съдържат един или повече цикли; насоченият ацикличен граф (DAG) забранява циклите и позволява планиране и топологично сортиране.
  • 🔗 Завършеност: Пълните графове свързват всяка двойка върхове, свързаните графове позволяват път между всеки два върха, а нулевите графове имат нула ръбове.
  • 🧩 Специални видове: Двуделните, Ойлеровите, Хамилтъновите, многоделните, цикличните и тривиалните графи налагат специфично правило за това как са подредени върховете и ребрата.

Типове графики в структурата на данните

Графът е нелинейна структура от данни, която се състои от върхове и ребра. Върховете съдържат информацията или данните, а ребрата действат като връзка между двойка върхове.

Графите могат да бъдат от няколко вида, в зависимост от позицията на възлите и ръбовете. Ето някои важни видове графи:

Насочена графика

Ръбовете на насочената графа съдържат стрелки, които показват посоката. Стрелката определя къде сочи или свършва ръбът. Ето пример за насочена графа.

Насочена графика

Насочена графика

  • Можем да преминем от възел A до D.
  • Не можем обаче да преминем от възел D към възел A, тъй като ръбът сочи от A към D.
  • Тъй като графиката няма тегла, пътуването от връх A до D ще струва същото като пътуването от D до F.

Неориентирана графика

Неориентираният граф съдържа ръбове без указатели. Това означава, че можем да се движим обратно между два върха. Ето един прост пример за неориентиран граф.

Неориентирана графика

Неориентирана графика

В горната графика,

  • Можем да се преместим от А до Б.
  • Можем също да се преместим от Б към А.
  • Ръбовете не съдържат посоки.

Това е пример за неориентиран граф с краен брой върхове и ребра без тегла.

Претеглена графика

Граф, който съдържа тегла или разходи по ръбовете, се нарича претеглен граф. Числовата стойност обикновено представлява разходите за преместване от един връх към друг. Както насочените, така и ненасочените графове могат да имат тегла по ръбовете си. Ето пример за претеглен граф (насочен).

Насочена графика с тегло

Насочена графика с тегло

  • От А до Б има предимство и теглото е 5, което означава, че преместването от А до Б ще ни струва 5.
  • А сочи към Б, но в тази графика Б няма пряко предимство над А. Така че не можем да пътуваме от Б до А.
  • Ако обаче искаме да се придвижим от A до F, има няколко пътя. Пътищата са ADF и ABF. ADF ще струва (10+11) или 21.
  • Тук пътят ABF ще струва (5+15) или 20. Тук добавяме теглото на всяко ребро в пътя.

Ето пример за неориентиран граф с тегла:

Неориентирана графика с тегло

Неориентирана графика с тегло

Тук ръбът има тежест, но няма посока. Така че това означава, че пътуването от връх A до D ще струва 10 и обратно.

Двупосочна графика

Двупосочните и неориентираните графи имат общо свойство. То е:

  • Обикновено неориентираният граф може да има едно ребро между два върха.

Например:

Двупосочна графика

  • Тук преминаването от A към D или D към A ще струва 10.
  • В двупосочен график можем да имаме две ребра между два върха.

Ето един пример:

Двупосочна графика

Двупосочна графика

Пътуването от A до D ще ни струва 17, но пътуването от D до A ще ни струва 12. Така че, не можем да присвоим две различни тегла, ако е неориентиран граф.

Безкрайна графика

Графът ще съдържа безкраен брой ребра и възли. Ако един граф е безкраен и същевременно е свързан граф, тогава той ще съдържа и безкраен брой ребра. Тук разширените ребра означават, че повече ребра могат да бъдат свързани с тези възли чрез ребра. Ето пример за безкраен граф:

Безкрайна графика

Безкрайна графика

Нулева графика

Нулевият граф съдържа само възли или върхове, но без ръбове. Ако е даден граф G = (V, E), където V са върховете, а E са ръбовете, той ще бъде нулев, ако броят на ръбовете E е нула. Ето пример за нулев граф:

Нулева графика

Нулева графика

Тривиална графика

Графовата структура от данни се счита за тривиална, ако е наличен само един връх или възел без ръбове. Ето пример за тривиален граф:

Тривиална графика

Мулти графика

Графът се нарича мултиграф, когато между два върха има множество ребра или върхът има цикъл. Терминът „цикъл“ в структурата на графовите данни означава ръб, сочещ към един и същ възел или връх. Мултиграфът може да бъде насочен или ненасочен. Ето пример за мултиграф:

Мулти графика

Има два ръба от B до A. Освен това, върхът E има самоциклична структура. Горният график е насочен граф без тегла върху ръба.

Пълна графика

Графът е завършен, ако всеки връх има насочени или ненасочени ребра с всички останали върхове. Да предположим, че има общо V брой върхове и всеки връх има точно V-1 ребра. Тогава този граф ще се нарича пълен граф. В този тип граф всеки връх е свързан с всички останали върхове чрез ребра. Ето пример за пълен граф с пет върха:

Пълна графика

Можете да видите на изображението, че общият брой на възлите е пет и всички възли имат точно четири ръба.

Свързана графика

Графът се нарича свързан граф, ако започваме от възел или връх и можем да стигнем до всички възли от началния възел. За тази цел трябва да има поне едно ребро между всяка двойка възли или върхове. Ето пример за свързан граф:

Свързана графика

Ето някои обяснения на горния свързан граф:

  • Ако приемем, че няма ръб между C и F, не можем да пътуваме от A до G. Ръбът от C до F обаче ни позволява да пътуваме до всеки възел от даден възел.
  • Пълната графика е свързана графика, защото можем да се преместим от възел към всеки друг възел в дадена графика.

Циклична графика

Графът се нарича цикличен, ако в него има един или повече цикли. Ето пример за цикличен граф:

Циклична графика

Тук върховете A, B и C образуват цикъл. Графът може да има множество цикли вътре в него.

Насочена ациклична графика (DAG)

Графът се нарича насочен ацикличен граф или DAG, ако в него няма цикли. DAG е важен при извършване на Топологично сортиране или намиране на реда на изпълнение. DAG е важен и за създаване на системи за планиране или сканиране на зависимостта на ресурсите и т.н. Графиката по-горе обаче не съдържа никакъв цикъл вътре. Ето един прост пример за насочен ацикличен граф (DAG):

Насочена ациклична графика (DAG)

Графика на цикъла

Цикличният граф не е същият като цикличния граф. В цикличния граф всеки възел ще има точно два свързани ръба, което означава, че всеки възел ще има точно две степени. Ето пример за цикличен граф:

Графика на цикъла

Двустранна графика

Тези видове Графики са специални видове графове, където върховете са присвоени на две множества. Двуделният граф трябва да следва правилото:

  • Двата комплекта върхове трябва да са различни, което означава, че всички върхове трябва да бъдат разделени на две групи или комплекта.
  • Върховете от един и същи набор не трябва да образуват ръбове.

Двустранна графика

Графика на Ойлер

Структурата от данни тип „граф“ се счита за граф на Ойлер, ако всички върхове имат четна степен. Терминът „степен на върховете“ означава броя на ръбовете, сочещи към или сочещи от определен връх. Ето пример за граф на Ойлер:

Графика на Ойлер

Всички върхове имат четни степени. Върховете A, D, E и H имат по две степени. Тук възел C има четири степени, което е четно.

Графика на Хамилтън

Графът на Хамилтън е свързан граф, където можете да посетите всички върхове от даден връх, без да посещавате отново същия възел или да използвате същото ребро. Този вид свързан граф е известен като „граф на Хамилтън“. Пътят, който посещавате, за да проверите дали даден граф е граф на Хамилтън или не, е известен като Хамилтонов път. Ето един прост пример за граф на Хамилтън:

Графика на Хамилтън

В това изображение можем да посетим всички върхове от всеки възел в горната графика. Един от пътищата може да бъде АДЧБЕВъзможно е също да се намери цикъл на Хамилтън. Цикълът на Хамилтън започва и завършва в един и същ връх. Следователно, цикълът на Хамилтън ще бъде ADCHBEA.

Въпроси и Отговори

Графът е нелинейна структура от данни, съставена от върхове (възли) и ръбове (връзки). Върховете съхраняват данни, а ръбовете свързват двойки върхове, образувайки мрежи, използвани за моделиране на пътища, социални връзки, зависимости и други.

Насочената графика използва ръбове със стрелки, сочещи от източник към цел, ограничавайки движението в тази посока. Ненасочената графика използва ръбове без стрелки, позволявайки движение между свързаните върхове в двете посоки.

Насоченият ацикличен граф, или DAG, е насочен граф, който не съдържа цикли. DAG се използват широко за планиране на задачи, изграждане на системи, разрешаване на зависимости между пакети и всеки работен процес, който изисква валиден топологичен ред.

Претеглената графика присвоява числово тегло на всеки ръб, представляващо разстояние, време или цена. Алгоритмите за най-кратък път, като например този на Дейкстра и протоколите за мрежово маршрутизиране, използват претеглени графики, за да намерят най-ефективния път.

Пълният граф има ръб между всяка двойка върхове. Свързаният граф се нуждае само от път между всяка двойка. Всеки пълен граф е свързан, но не всеки свързан граф е пълен.

Двуделните графи разделят върховете на две непресякащи се множества с ръбове само между двете множества. Те моделират проблеми със съпоставянето, като например разпределяне на работници към работни места, студенти към курсове или шофьори на споделено пътуване към пътници.

Графовите невронни мрежи прилагат машинно обучение към графично структурирани данни за задачи като откриване на измами, откриване на лекарства и препоръки. Графите на знанията захранват отговорите на въпроси с изкуствен интелект, а изчислителните графики описват всеки напред и назад ход в дълбокото обучение.

Да. Инструментите на AI Copilot, като GitHub Copilot и ChatGPT, генерират шаблони за BFS, DFS, Dijkstra и топологично сортиране в повечето езици. Разработчиците все още трябва да проверяват граничните случаи, обработката на цикли и сложността на производствения код.

Обобщете тази публикация с: