Яка різниця між структурою даних Деревом та Графіком?


139

В академічному плані, яка суттєва відмінність між структурою даних Деревом та Графіком? А як щодо пошуку на основі дерева та пошуку на основі графіків?

Відповіді:


150

Дерево - це лише обмежена форма Графіка.

Дерева мають напрямок (стосунки батька / дитини) і не містять циклів. Вони входять у категорію спрямованих ациклічних графіків (або DAG). Отже, Дерева - це ДАГ з тим обмеженням, що дитина може мати лише одного батька.

Важливо зазначити одне, що Дерева - це не рекурсивна структура даних. Вони не можуть бути реалізовані як рекурсивна структура даних через вищезазначені обмеження. Але будь-яка реалізація DAG, яка, як правило, не є рекурсивною, також може бути використана. Моя бажана реалізація дерева - це централізоване представлення карт і не є рекурсивним.

Графіки, як правило, спочатку шукаються по ширині або спочатку глибині. Те саме стосується Дерева.


8
Графіки дуже корисні і їх можна використовувати для моделювання величезної кількості речей. Багато інших структур даних можна розглядати як графік із обмеженнями. Наприклад, окремо пов'язаний список є особливим випадком DAG.
JR Garcia

7
@ user785287 що ви маєте на увазі під централізованим представленням карт ?
Geek

36
"Дерева не є рекурсивною структурою даних" вводить в оману і неправильно. Дерево може бути представлене нерекурсивною структурою даних (наприклад, масив ребер; повне дерево, як те, що лежить в основі бінарної купи, може бути представлено дуже масивно в масиві; є інші стислі уявлення тощо тощо), але, мабуть, найпопулярнішим і корисним способом їх представлення є використання рекурсивної структури на основі покажчика. Представлення не є унікальним для укорінених дерев, але це не має значення.
j_random_hacker

2
Не зовсім. Дерево не обов'язково має напрямок. en.wikipedia.org/wiki/Tree_(graph_theory) показує приклад дерева без напрямку. Вони часто використовуються в біологічних контекстах.
Міхал Пальчевський

2
@ harshpatel991 дерева не спрямовані в тому сенсі, що: "X і Y перебувають у відносинах батько-дитина" не мають напрямку. Хоча індивідуальні відносини, "X - дитина Y", і "Y - дитина X", - це спрямовані відносини. Напрямок вказує саме це; напрям 'руху'. У деревах ідея напрямку насправді не потрібна, якщо вона не має сенсу (що найчастіше буває з деревами). Так я принаймні бачу це.
Костас Муратидіс

105

Замість того, щоб пояснювати, я вважаю за краще показувати це на картинках.

Дерево в режимі реального часу

Дерево в режимі реального часу

Графік використання в реальному житті

Графік реального часу

Так, карту можна візуалізувати як структуру даних графіків.

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

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

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

Технічна схема може бути такою

Дерево:

введіть тут опис зображення

Графік:

введіть тут опис зображення

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

Список літератури:

  1. http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-17-trees-and-graphs/#_Toc362296541

  2. http://www.community-of-knowledge.de/beitrag/data-trees-as-a-means-of-presenting-complex-data-analysis/

  3. Вікіпедія


7

Інші відповіді корисні, але у них відсутні властивості кожного:

Графік

Ненаправлений графік, джерело зображення: Вікіпедія

Направлений графік, джерело зображення: Вікіпедія

  • Складається з набору вершин (або вузлів) та набору ребер, що з'єднують деякі або всі з них
  • Будь-який край може з'єднати будь-які дві вершини, які вже не з'єднані однаковим ребром (у тому ж напрямку, у випадку спрямованого графіка)
  • Не обов'язково з'єднуватися (краї не повинні з'єднувати всі вершини разом): один графік може складатися з декількох роз'єднаних наборів вершин
  • Може бути націленим або непрямим (що стосується всіх ребер у графіку)
    відповідно до Вікіпедії :

    Наприклад, якщо вершини представляють людей на вечірці, а між двома людьми є край, якщо вони потискають руку, то цей графік є непрямим, оскільки будь-яка людина A може потиснути руку людині B, лише якщо B також потисне руку A. На відміну від цього, якщо будь-який край від людини A до людини B відповідає A, що захоплюється B, то цей графік спрямований, тому що захоплення не обов'язково відтворюється.

Дерево

Джерело зображення: Вікіпедія

  • Тип графіка
  • Вершини частіше називають "вузлами"
  • Краї спрямовані і являють собою відносини "є дитиною" (або "є батьком")
  • Кожен вузол (крім кореневого вузла) має рівно одного батьківського (та нульового або більше дітей)
  • Має рівно один "кореневий" вузол (якщо дерево має принаймні один вузол), який є вузлом без батьківського
  • Потрібно підключити
  • Є ациклічним, тобто не має циклів : "цикл - це шлях [послідовність AKA] ребер і вершин, де вершина доступна від себе"

У перерахованих вище властивостях є деяке перекриття. Зокрема, останні два властивості мають на увазі решту властивостей. Але все-таки їх варто відзначити.


3

У дереві кожен вузол (крім кореневого вузла) має рівно один вузол-попередник та один-два наступні вузли. Її можна пройти за допомогою переходу "Замовлення", "Замовлення", "Замовлення після замовлення" та "Ширина першої ширини". Дерево - це особливий вид графа, який не має циклу, так що його називають DAG (Directed Acyclic Graph). Дерево - це ієрархічна модель.

На графіку кожен вузол має один або декілька попередніх вузлів та наступних вузлів. Графік проходить за допомогою алгоритмів глибинного першого пошуку (DFS) та першого пошуку ширини (BFS). Графік має цикл, тому він складніший за дерево. Графік - це мережна модель. Існує два види графіків: спрямовані графіки та ненаправлені графіки.


2

Дерева очевидні: вони рекурсивні структури даних, що складаються з вузлів з дітьми.

Карта (він же словник) - пари клавіш / значень. Дайте карті ключ і воно поверне пов'язане значення.

Карти можна реалізувати за допомогою дерев, сподіваюся, ви не вважаєте це заплутаним.

ОНОВЛЕННЯ: Плутати "графік" для "карта" дуже заплутано.

Графіки складніші за дерева. Дерева мають на увазі рекурсивні відносини батька / дитини. Існують природні способи обрізати дерево: по-перше, по глибині, по рівню та ін.

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

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


1
Вибачте, я маю на увазі графік, я набрав карту.
user918304

"Плутати" графік "для" карта "дуже заплутано." :)
cpz

1
Казати "графіки складніші за дерева" - це як сказати "Ворони більш спеціалізовані, ніж птахи". Чи не слід сказати натомість, що "Усі дерева - це графіки, але не всі графіки - це дерева"?
dudewad

Мені все одно через шість років. Звичайно, тут можна краще використовувати свій час.
duffymo

2

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

У графі може бути більше одного шляху, тобто графік може мати односпрямовані або двонаправлені шляхи (ребра) між вузлами

Також ви можете побачити більше деталей: http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/


0

У математиці графік - це представлення сукупності об'єктів, де деякі пари об’єктів з'єднані ланками. Пов’язані між собою об'єкти представлені математичними абстракціями, які називаються вершинами, а зв’язки, що з'єднують деякі пари вершин, називаються ребрами. [1] Як правило, графік зображується у схематичній формі як набір точок для вершин, з'єднаних лініями або кривими для ребер. Графіки є одним із об'єктів вивчення дискретної математики.


0

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


0

Дерево - це диграф, який:

а) зі знятими напрямками краю, він з'єднаний і ациклічний

  1. Можна видалити або припущення, що воно є ациклічним
  2. Якщо вона кінцева, ви можете видалити припущення, що воно підключено

б) кожна вершина, крім однієї, кореня, має 1

в) корінь має 0

  1. Якщо є лише кінцево багато вузлів, ви можете видалити припущення, що корінь має 0, або припущення, що вузли, окрім кореня, мають ступінь 1

Довідка: http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf


0

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

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