Що таке графіки в умовах мирян


18

Що таке графіки в галузі інформатики та для чого вони використовуються? З точки зору мирян, переважно.

Я прочитав визначення у Вікіпедії :

В інформатиці графік - це абстрактний тип даних, який призначений для реалізації концепцій графа та гіперграфа з математики.

Структура даних графіків складається з кінцевого (і, можливо, змінного) набору впорядкованих пар, званих ребрами або дугами, певних сутностей, званих вузлами або вершинами. Як і в математиці, ребро (x, y), як кажуть, вказує або переходить від x до y. Вузли можуть бути частиною структури графа, або можуть бути зовнішніми об'єктами, представленими цілими індексами або посиланнями.

але я шукаю менш формальне, простіше розуміння визначення.


Ви маєте на увазі графіки структури даних?
Вимкнення системи

1
Так, вибачте. Графіки, як описано тут en.wikipedia.org/wiki/Graph_(ab абстракт_data_type) , тільки я шукаю менш формальне, простіше зрозуміти визначення.
ConditionRacer

@ Justin984 посилання Вікіпедії з дужками (а їх дуже багато) не працюють, дужки не грають добре з форматом Markdown для посилань. Тепер для подальшої довідки додайте будь-які роз’яснення до свого питання в самому питанні, а не в коментарях, вони не такі видимі, і їх легко пропустити. Я відредагую ваш вище коментар у питанні ...
yannis

@ Justin984 Також зауважте, що обмін стеками з інформатики може бути дещо підходящим для таких питань, ніж програмісти. Не зрозумійте мене неправильно, питання тут ідеально підходить до теми, і він отримав чудові відповіді, але це не завадило б, якщо ви перевірили громаду, яка трохи більше орієнтована на основні концепції інформатики, ніж ми (не варто опублікуйте те саме запитання на кількох сайтах, однак, якщо трапиться повідомлення на неправильному сайті, ми можемо автоматично перенести його на правильний).
Янніс

Відповіді:


26

Прекрасним прикладом мирян може бути Facebook . Мережу вас, ваших друзів та їхніх друзів тощо колективно називають соціальним графіком .

У цьому "графіку" люди вважаються вузлами графіка, а краї - ланками дружби .

У Facebook друг - це двонаправлені відносини (A є товариш B => B - друг A), тож графік є непрямим графіком . Таку мережу, як Google+ або Twitter, вважатимуть спрямованим графіком, оскільки напрям відносин має тут значення.

Усі ці графіки називаються циклічними графами, оскільки зв'язки між вузлами можуть утворювати цикли. Family Tree , з іншого боку, являє собою особливий вид графа , який, крім усього іншого, є ациклічні , так як не може бути циклів в родоводу relatioship. (Технічно його називають спрямованим ациклічним графіком (DAG), оскільки його спрямований і ациклічний)

Це повинно охоплювати всі основні жаргони, що включають графіки, тому тепер ви маєте змогу слідкувати за рештою матеріалів у цій галузі.


1
Не можу повірити, що мені не прийшло в голову, що це називається facebook graph api. Гарний приклад!
ConditionRacer

4
Родинне дерево не циклічне? Не повинно бути, але це, на жаль, є ...
Мар'ян Венема

1
@MarjanVenema, генеалогічне дерево циклічне ? (Це спрямований графік, тому напрямок є важливим при визначенні циклів, і, імовірно, крокові відносини насправді не враховуються.)
huon

@dbaupp: У мене немає бажання вникати тут у деталі, тому я лише зазначу одне слово: інцест.
Мар'ян Венема

5
@MarjanVenema, ти не вистачаєш моєї точки зору. Цикл у спрямованому графіку - це зразок на зразок A -> B -> C -> A(тобто коло стрілок), інцест просто дає A -> B -> Cта A -> D -> C(тобто алмаз). Цикл родинного дерева потребує подорожі в часі.
хун

16

Графіки - одне з найважливіших математичних понять, що застосовуються в інформатиці.

Ви багато разів бачили графіки. Уявіть, що ви здійснюєте рейс літака з одного міста в інше. Ви неминуче знайдете в кишені сидіння перед вами приємний глянсовий журнал від авіакомпанії. Біля задньої частини цього журналу ви майже завжди можете знайти карту, на якій зображені міста, які обслуговуються цією авіакомпанією, представлені у вигляді кіл, а рейси, що з'єднують ці міста, представлені у вигляді кривих ліній. Це графік! Міста, представлені у вигляді кіл, є вузлами цього графіка, а польоти, представлені у вигляді вигнутих ліній, - це краї. Графіки - це лише речі з вузлами та ребрами, які з'єднують вузли.

Ви можете прикрасити ці прості графіки різними способами. Якщо ви дивитесь на цю карту, ви не хочете бачити лише купу кіл та ліній. Ці міста мають назви. Позначення цих міст призводить до позначення графіка. (Можна також позначити краї, наприклад, політ 1234.) Інформатика часто пов'язує дані з вузлами, іноді з ребрами, але це лише розширення мітки. Це все ще маркований графік. Ще один результат прикрашання, якщо ви можете літати безпосередньо з міста А до міста Б, але не з міста Б до міста А. Очевидним способом зобразити це - поставити стрілку на лінію, яка з'єднує міста, щоб зобразити цей односторонній взаємозв'язок. Тепер у вас є спрямований графік.

Зв'язані списки, дерева, діаграми стану переходів та безліч інших структур даних інформатики - це все приклади графіків. Це дуже потужна концепція.


Я фактично розширюю цей приклад, щоб зазначити, що всі сутності, описані у вашому прикладі, можуть бути зображені у вигляді вершин на графіку (місто, площина, журнал, карта тощо), а сама карта є лише однією вершиною.
Дем'ян Брехт

14

Кращим питанням буде "Для чого не використовуються графіки?". Інформатика - це багато в чому вивчення графіків.

Графік, з точки зору мирян, - це сукупність довільних абстрактних об'єктів, що називаються "вузлами" або "вершинами", які представляють точки з'єднання. Потім вони з'єднуються через "доріжки" або "краї". Абстрактний тип даних "Графік" - це реалізація математичного "Графіка". Отже, у вас є вузли та краї, як ваші поля та різні операції, які ви можете виконувати над ними. Наприклад, ви можете додати новий вузол до колекції графа (це може бути список, масив чи інша структура, залежно від мови). Потім ви можете зв’язати цей вузол з існуючими вузлами. Операції також включатимуть обхід графіка, перевірку того, чи розділяють два вузли ребро (з’єднані), отримання значень з вузлів або ребер та видалення вузлів або ребер з графіка.

Що стосується використання, графіки використовуються повсюдно. Мережі особливо важко використовують їх, але вони знайдені в області штучного інтелекту, обміну даними, розвитку ігор, геоінформатики та багатьох інших дисциплін. У формальній інформатиці вони бачать ще більше використання, а саме як спосіб представлення держави.

Ефективно все, що ви можете представити у вигляді набору з'єднань, може бути представлено у вигляді графіка та реалізовано через цей ADT в якійсь формі.

Ось графічний приклад, який я зробив:

Приклад графіку


3

Графік - це лише сукупність об'єктів, з'єднаних між собою рядками, званими вершинами.

Термін "графік" - це абстрагування та узагальнення багатьох структур даних, що використовуються при розробці програмного забезпечення. Пов'язані списки, двійкові дерева та AST - це всі графіки.

В основному, будь-яка колекція об'єктів, що має вказівники, які асоціюють об'єкти один з одним, є графіком. Коли у вас є графік, ви можете застосувати до нього принципи теорії графів , щоб вирішити певні проблеми .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.