Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту сад и огород
деревья и графы в чем разница, узлы, leetcode, иерархия узлов, теория графов , сила связи, структуры данных какие бывают, деревья структуры данных, графы структуры данных

Дерево 0 и 1 информатика

Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Поиск цены в BST занимает o (log n) времени. Это означает, что среди миллионов или миллиардов записей нужная цена может быть найдена очень быстро.

Предположим, вы ищете концентратор значений X; чтобы быстро найти его в BST, используйте следующий алгоритм.

  1. Начните с корня дерева.
  2. Если x = значение узла: остановитесь.
  3. Если x< значения узла: перейти к левому дочернему узлу.
  4. Если x >цена узла: перейдите к правому дочернему узлу.
  5. Перейдите к шагу 2.

Если вы не уверены, что искомый узел есть, вам нужно изменить шаги 3 и 4, чтобы остановить поиск.

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

  • Углубитесь в теорию структур данных,
  • Научитесь решать сложные алгоритмические задачи,
  • научитесь применять алгоритмы и структуры данных в своих программах.

Реализация.

Создание узла TreeNode аналогично созданию узла ListNode. Единственное отличие заключается в том, что вместо одной функции есть две: левая и правая. Это относится к узлам левого и правого крыла.

🌳 Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Эти три типа пересечений могут быть реализованы с помощью следующих методов

  • Итерация — использование циклов и стеков. В этом случае данные можно удалять только с концов.
  • Задним числом — с помощью функции, которая вызывает сама себя.

Существует и четвертый тип пересечений — обход серии уровней. В этом методе используются хвосты. Здесь данные можно удалять только с начала.

🌳 Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Для первых трех типов узлов схема практически идентична. Просто выберите пересечения в порядке возрастания. Далее анализируются повторяющийся и ретроспективный методы LC 94: начнем с повторяющегося варианта,

🌳 Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Как правило, графы Они представлены в виде таблиц близости. Таким образом, выше графа следующая таблица. Панель близости имеет следующий формат.

Каждая строка и столбец представляют узел; строка I и столбец J или узлы с A_ = 1 указывают на связь между узлом I и узлом j.

A_ = 0 означает, что узлы I и J не связаны.

Для этого узла не существует. графе Он не имеет связи с самим собой. Поэтому диагональ таблицы равна нулю. Аналогично, A_ = A_, потому что связь не указана. Это означает, что если узел A связан с узлом B, то b связан с a. В результате диагностируется панель близости.

Давайте рассмотрим пример, который поможет понять вышеизложенную теорию.

🌳 Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Представленные фигуры имеют вес граф Прямые грани. Обратите внимание, что связь больше не симметрична — вторая строка таблицы близости пуста, потому что в b нет исходящей связи. Числа от 0 до 1 отражают силу связи. Например, граф C влияет на граф a сильнее, чем a — c.

🌳 Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Реализация.

Невесомое и неориентированное исполнение. граф . Основная структура класса представляет собой список списков Python. Каждый из них является буквенно-цифровым. Индикатор списка представляет собой граф. При создании объекта графа необходимо определить количество узлов, чтобы создать список списков. Затем вы можете использовать self. graph [a] [b] для доступа к связям между узлами A и B.

🌳 Деревья и графы : что это такое и почему их обязательно нужно знать каждому программисту

Запрос LC 323: Чтобы ответить на вопрос о количестве связанных элементов, изучите каждый узел графа . Затем «посетите» соседние. графы . Повторяйте операцию до тех пор, пока не будут заполнены только те узлы, которые уже наблюдались программой. Затем проверьте наличие в графе узлов, которые еще не были замечены. Если такие узел присутствует и есть еще хотя бы один клок, нужно Возьмите новый узел и повторите процесс.

def get_n_components(self, mat: List[List[int]]) ->int: "" "Учитывая таблицу близости, верните количество связанных элементов" "" q = [] unseen = [*range (len)] ness = 0 Loop, q: q. append (unseen. pop (0)) Answer += 1 #q: q. append (unseen. . pop (0)) node. Other I am node.< len(unseen): node = unseen[i] # Если узел подключен к центру, добавляем его в очередь # чтобы перебрать его соседей # из невидимых узлов и избежать бесконечного цикла if mat[focal][node] == 1: q.append(node) unseen.remove(node) else: i += 1 return answer

Алгоритм действий:

  1. Строки 5-8: создаем хвост (Q), список узлов (invisible) и количество ответов.
  2. Строка 10: запустить цикл while. Он выполняется до тех пор, пока в хвосте есть узел. нужно К незамеченному процессу или узлу.
  3. Строки 13-15: если хвост пуст, удалите из него первый узел и увеличьте количество элементов.
  4. Строки 18-19: выбор следующего доступного узла в хвосте (фокус).
  5. Строка 22: запуск цикла while, который выполняется до тех пор, пока не будут обработаны все оставшиеся узлы.
  6. Строка 23: именование текущего узла и оптимизация кода.
  7. Строки 28-30: если текущий узел соединен с центром, добавьте его к узлам текущего кластера. Удалить из списка возможных узлов в невидимом кластере. Используйте эту энергию, чтобы избежать бесконечных циклов.
  8. Строки 31-32: Если текущий узел не соединен с центром, перейдите к следующему узлу.

Заключение

Графы и деревья - Базовые структуры данных. Сфера их применения огромна. Например, графы Они используются там, где требуются алгоритмы для поиска решений. Реальный пример их использования - узел JIT JIT.

Деревья используются, когда необходимо добавлять/удалять объекты при поиске по ключу. Например, различные базы данных и банки данных (БД). Кроме того, деревья Они являются неотъемлемой частью Random Forest, алгоритма машинного обучения.

В следующей части материала начнется изучение таблиц фрагментации.

Базовые и продвинутые алгоритмы и структуры данных в курсе включают в себя

  1. Живые онлайн-семинары два раза в неделю.
  2. 47 видеороликов и 150 практических упражнений.
  3. По поводу занятий проконсультируйтесь с преподавателем.

Материалы по теме

  • Разработка Зачем разработчикам знать об алгоритмах и структурах данных?
  • Обычные алгоритмы и структуры данных ☕javascript: объекты и фрагментация
  • 10 структур данных, которые необходимо знать (+ видео и задания)
Оцените статью