Рубрики
Без рубрики

Реальные мировые структуры данных: таблицы и графики в JavaScript

Юнг Л. Л. Л. Л. Л. Л.А. Реал. Структуры данных: столы и графики в JavaScriptPphoto от Matt Porders на Unsplashan вид с воздуха коробок с адресами, каждый из которых содержит люди и различные предметы, показывает окрестности, связанные с их дорогами. Просмотрено близко, вы можете сказать, что у нас есть хэш-таблица. Но, когда

Автор оригинала: FreeCodeCamp Community Member.

Yung L. Leung

Вид с воздуха коробок с адресами, каждый из которых содержит люди и различные предметы, показывает окрестности, связанные с их дорогами. Рассматривается близко, вы можете сказать, что у нас есть хеш-таблица. Но, когда смотреть издалека, вы можете увидеть График Отказ Продвижение от линейный ( Связанные списки, стеки и очереди ) и бинарный ( Двоичные поиски деревья, двоичные кучи ) Структуры данных , Хэш таблицы, и Графики являются шагами к большему разнообразию реальных применений.

Столы

А хеш-таблица Представляет данные (парные пары) Tabled по индексам.

Каждый уникальный ключ используется для генерации индекса (хеш-функция). Функция хешей может генерировать тот же индекс для нескольких уникальных ключей ( Collision ). Решение этой проблемы состоит в том, чтобы сохранить наборы данных под тем же индексом ( цепочка ).

Итак, вы можете представить себе хеш-таблица Будучи системой для стеллажа подобных предметов вместе. Просто введите имя элемента в хеш-функция И все элементы зеленоватого типа будут присвоены полку пространства, то есть 4.

В общем, пара ценностей Вставить требует генерации индекс (Номер полки), проверяя, существует ли эта полка, и поместив элемент ( данные ) на полке. Предположим, у меня были бананы и яблоки на нижней полке ( index 0 ) и красное вино на моей верхней полке ( index 2 ).

Если мой индекс генератор ( хеш-функция ) вернул Индекс 2 Для моих 2 «цыплят ротиссерий», чтобы вставить, что данные требуют проверки и создания полки пространства.

Чтобы получить ценность (item) требует ввода его имени ( КЛЮЧ ), чтобы создать свой индекс (номер полки) и извлекать все элементы на этой полке. Затем в поисках точного элемента (его имя или ключ) и извлечение его (возвращаемое значение). Итак, чтобы найти, сколько яблок на складе ( 20 ) требует итерации по моей полке фруктов.

Чтобы получить список всех Ключи или Значения Требуется поиск через каждую существующую полку, введя его в свой манифест (толкайте в массив) и отправляя документы (возвратные клавиши или массив значений).

Сложность для Вставить Пара ключа или Доступ Значение, в общем, постоянное время ( o (1) ). Хорошая хеш-функция равномерно распределяет все предметы для всех доступных полков. Итак, Вставка или доступ Не требует зацикливания всех существующих «полков» для хранения или поиска данных.

Потому что каталогизация ( ключевые ключи или значения ) требует прохождения всех полков, у него сложность На) Отказ Для N Различные наборы данных (для 4 различных предметов), требуется n шаги Для выполнения каталога (требуется просмотр всех 4 элементов для документирования его имени или его количества).

Графики

А График это узлы ( вершины ) данных, связанных с их соединениями ( кромки ). Дорожная карта городов, связанных их дороги, является графиком. График подключенных пользователей из приложения в социальных сетях является еще одним примером.

К Добавить вершину и край требует хранения их в виде пар клавиш в Список соседних Отказ Таким образом, вершина (Нью-Йорк) может быть подключена к другим вершинам (Нью-Джерси и Пенсильванию), сделав «Нью-Йорк» ключ к массиву, содержащему «Нью-Джерси», «Пенсильвания».

Реверс также должен быть реализован, то есть: «Нью-Джерси», указывая на массив «Нью-Йорка», «Пенсильвания», и так далее. Таким образом, результатом является соседний список ключей («Нью-Йорк», «Нью-Джерси,« Пенсильвания »), каждый указывающий на массивы их соответствующих соединений.

К Удалить край Требуется удаление соединения Vertex1 с Vertex2 и обратным. Так Чтобы удалить соединение Нью-Йорка к Нью-Джерси, также требует, удаляя связь Нью-Джерси с Нью-Йорком.

К Удалить вершину требует итерации через его соединения. Удаление краев, прежде чем окончательно удалять вершину из списка смежности. Итак, чтобы удалить New York требует отключения его от соседей до удаления из списка.

Относительно отправной точки, A Глубина-первая Обход включает в себя посещение соседа и его соседей, прежде чем продолжить следующий непосредственный сосед. А Ширина – первая Обход включает в себя посещение всех ближайших соседей перед далекими соседями.

Так что для графика с Нью-Йорком, Нью-Джерси, Пенсильвания и Вирджиние как вершины, A Глубина-первая Обход, начиная с Нью-Джерси, будет [«Нью-Джерси», «Пенсильвания», «Вирджиния», «Нью-Йорк»].

А Ширина – первая Из Нью-Джерси было бы [«Нью-Джерси», «Нью-Йорк», «Пенсильвания», «Вирджиния»].

Так как График это набор узлов, подключенных, линейный & бинарный Структуры данных Может, в некотором смысле, рассматриваться как простые графики. Поскольку графики могут принимать разные формы и формы, сложность обхода Через график зависит от алгоритма (ы), используемых для путешествий, обсуждение лучше всего сохранено в другое время.

Использованная литература:

https://www.udemy.com/js-algorithms-and-data-structures-masterclass/