С академической точки зрения, в чем принципиальная разница между структурой данных Tree и Graph? А как насчет поиска по дереву и по графику?
источник
С академической точки зрения, в чем принципиальная разница между структурой данных Tree и Graph? А как насчет поиска по дереву и по графику?
Дерево - это ограниченная форма Графа.
Деревья имеют направление (родительские / дочерние отношения) и не содержат циклов. Они вписываются в категорию направленных ациклических графов (или DAG). Таким образом, деревья - это группы доступности базы данных с ограничением на то, что у ребенка может быть только один родитель.
Важно отметить, что деревья не являются рекурсивной структурой данных. Они не могут быть реализованы как рекурсивная структура данных из-за вышеуказанных ограничений. Но любая реализация DAG, которая обычно не является рекурсивной, также может быть использована. Моя предпочтительная реализация Tree представляет собой централизованное представление карты и не является рекурсивной.
Графики обычно ищутся по ширине или по глубине. То же самое относится и к дереву.
Вместо объяснения я предпочитаю показывать это в картинках.
Дерево в реальном времени
График в реальной жизни
Да, карта может быть визуализирована как структура данных графа.
Увидев их так, жизнь становится проще. Деревья используются в тех местах, где мы знаем, что у каждого узла есть только один родитель. Но графы могут иметь несколько предшественников (термин родитель обычно не используется для графов).
В реальном мире вы можете представлять практически все, используя графики. Я использовал карту, например. Если вы рассматриваете каждый город как узел, до него можно добраться из нескольких точек. Точки, которые ведут к этому узлу, называются предшественниками, а точки, к которым этот узел приведет, называются преемниками.
Электрическая схема, план дома, компьютерной сети или речной системы - еще несколько примеров графиков. Многие примеры из реального мира можно рассматривать как графики.
Техническая схема может быть такой
Дерево:
График:
Обязательно обратитесь по ссылкам ниже. Они ответят почти на все ваши вопросы о деревьях и графиках.
Ссылки :
http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-17-trees-and-graphs/#_Toc362296541
http://www.community-of-knowledge.de/beitrag/data-trees-as-a-means-of-presenting-complex-data-analysis/
Википедия
источник
Другие ответы полезны, но им не хватает свойств каждого:
график
Ненаправленный график, источник изображения: Википедия
Направленный граф, источник изображения: Википедия
Может быть направленным или ненаправленным (что применимо ко всем ребрам в графе)
Согласно Википедии :
дерево
Источник изображения: Википедия
Существует некоторое совпадение в вышеуказанных свойствах. В частности, последние два свойства подразумеваются остальными свойствами. Но все же стоит отметить.
источник
В дереве каждый узел (кроме корневого) имеет ровно один предшествующий узел и один или два последующих узла. Это может быть пройдено с помощью обходов In-order, Pre-order, Post-order и Breadth First. Дерево - это особый вид графа без цикла, который называется DAG (направленный ациклический граф). Дерево - это иерархическая модель.
В графе каждый узел имеет один или несколько предшествующих узлов и последующих узлов. График перемещается с использованием алгоритмов поиска в глубину (DFS) и поиска в ширину (BFS). Граф имеет цикл, поэтому он сложнее дерева. График - это сетевая модель. Существует два вида графов: ориентированные графы и неориентированные графы.
источник
Деревья очевидны: это рекурсивные структуры данных, состоящие из узлов с дочерними элементами.
Карта (он же словарь) - это пары ключ / значение. Дайте карте ключ, и он вернет соответствующее значение.
Карты могут быть реализованы с использованием деревьев, надеюсь, вас это не смущает.
ОБНОВЛЕНИЕ: Запутывание «графика» для «карты» очень запутанно.
Графики сложнее деревьев. Деревья подразумевают рекурсивные отношения родитель / ребенок. Существуют естественные способы обхода дерева: сначала глубина, ширина ширина, порядок уровней и т. Д.
Графы могут иметь однонаправленные или двунаправленные пути между узлами, быть циклическими или ациклическими и т. Д. Я считаю, что графы являются более сложными.
Я думаю, что простой поиск в любом тексте приличных структур данных (например, «Руководство по разработке алгоритмов») даст больше и лучше информации, чем любое количество ответов SO. Я бы порекомендовал вам не идти по пассивному маршруту и начать делать некоторые исследования для себя.
источник
Дерево - это особая форма графа, то есть минимально связный граф, имеющий только один путь между любыми двумя вершинами.
В графе может быть более одного пути, т.е. граф может иметь однонаправленные или двунаправленные пути (ребра) между узлами
Также вы можете увидеть более подробную информацию: http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/
источник
В математике граф представляет собой представление множества объектов, где некоторые пары объектов связаны между собой ссылками. Взаимосвязанные объекты представлены математическими абстракциями, называемыми вершинами, а ссылки, соединяющие некоторые пары вершин, называются ребрами. [1] Как правило, график изображается в виде диаграммы в виде набора точек для вершин, соединенных линиями или кривыми для ребер. Графы являются одним из объектов изучения дискретной математики.
источник
один корневой узел в дереве и только один родитель для одного потомка. Однако понятия корневого узла не существует. Другое отличие состоит в том, что дерево - это иерархическая модель, а граф - это сетевая модель.
источник
Ссылка: http://www.cs.cornell.edu/courses/cs2800/2016sp/lectures/lec27-29-graphtheory.pdf
источник
Дерево - это в основном неориентированный граф, который не содержит цикла, поэтому мы можем сказать, что дерево является более ограниченной формой графа. Однако дерево и граф имеют различное применение для реализации различных алгоритмов в программировании. Например, график может использоваться для дорожной карты модели, а дерево может использоваться для реализации любой иерархической структуры данных.
источник