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

Почему теория графика настолько удивительная? – Часть 1.

Теория графов имеет особое влияние на нашу повседневную жизнь. Неизвестна большинству людей, многие аспекты OU … Теги с теорией графика, информатики, алгоритмы, Python.

Теория графов имеет особое влияние на нашу повседневную жизнь. Не знаю для большинства людей, многие аспекты нашей повседневной жизни моделируются графиками: GPS, которые мы используем каждый день, наши предложения в Facebook, и даже в Интернете и операционные системы, которые мы используем. Как может понятие, которая выглядит так просто – модели, описывающие отношения между объектами – становятся настолько мощными? Мы собираемся попробовать некоторые из причин этого и объяснить некоторые очень интересные свойства и факты о теории графика во время новой записи в магии вычислительной серии – «Почему теория графика настолько удивительна?»

Немного истории

Идея графа была в первую очередь введена очень влиятельным швейцарским математиком по имени Леонхард Эйлер Отказ В течение первой половины 18-го века Эйлер предпринял попытки решить знаменитую проблему Кенигсберга (город находится в России и теперь называется Калиниградом), в конечном итоге удалось в 1735 году.

(Изображение предоставлено encyclopedia Britannica, Inc )

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

Эйлер продемонстрировал, что такой путь не может быть достигнут в этом обстановке. Он в первую очередь предполагал, что путь существовал. При попытке прохождения, каждый раз, когда гражданин сталкивается на Landmass, кроме старта и финишных встреч, два моста должны быть учтены – тот, на который гражданин только что прошел, и еще один, чтобы забрать его на другую землю, поэтому номер мостов на каждой лендмассе должно быть четным числом. Тем не менее, на картинке показано, что нет нировных бассейнов с четным количеством мостов. Поэтому такой обход невозможен в текущей настройке.

Хотя Эйлер был одним из первых по неосознанному опыту с тем, что было стать теорией графика, графики были официально определены только после 1870 года. В формальном определении график описывается двумя наборами. Один набор, называемый V , содержащие вершины (или узлы), а Е , установленные края – пары вершин, которые могут быть неупорядоченными (приводят к неопрященному графику) или упорядоченным (в результате в результате направленного графа).

Графики в современном контексте

Теория графов стала экспоненциально более полезной с выбросом потребительских компьютеров. Концепция достаточно проста, чтобы легко представлять в коде и памяти, и люди даже придумали различные методы, которые стремятся оптимизировать, как обрабатываются графики. Хотя другие записи в серии содержат фрагменты C ++, графики обработки в C ++, нуждаются в большем количестве кода, и я думаю, что это сделает статью сложнее прочитать.

Пусть G быть графиком с N узлы и Е края. Ниже мы продемонстрироваем два разных метода для создания класса Python для обработки этого графа, используя две различные формы представления графа. Оба представления будут неопределенные графики.

Смешивание матрицы

Удобный режим для представления G Используя квадратный булевой матрицы размера N * N . Пусть эта матрица будет называться A . Тогда, [I] [J] будет правдой, если между узлами есть край i и J и ложь иначе. В неопрященном графике матрицы А симметрично, как край от Я к J является двунаправленным, так [I] [J] = [I] [J] Для любого i и J Отказ

Одним из преимуществ этого является то, что определяя ли ребра (Я, j) находится на графике можно сделать в постоянное время. Однако, если мы стремимся к примеру хранить график с большим количеством узлов и относительно небольшого количества края, этот метод может доказать неэффективность с точки зрения памяти (эти графики также называются редкими графиками). Это приводит нас к другому популярному методу представления графов.

Списки соседних

Этот метод направлен на представление графа с помощью N списки, перечисленные соседей каждого узла.

Хотя при использовании этого метода проверьте, существует ли данный край, не является постоянным (имея o (e) худший случай), зацикливание через все соседи узла – это много времени, эффективнее в редких графах, и есть и другие преимущества, которые Мы увидим в будущих статьях.

Другие методы

Альтернативно, графики также могут быть представлены с помощью списка ребер или так называемой матрицы падения. Матрица заболеваемости является логией Свидетельствовать * N Матрица, с одной строкой для каждого края. Столбцы, представляющие две конечности края, отмечены 1 на соответствующей линии.

Все методы имеют свои собственные преимущества и недостатки, поскольку мы увидим в других статьях.

В следующей статье мы будем углубиться в теорию графика, демонстрируя некоторые интересные алгоритмы, связанные с графом и их приложения. До тех пор не обязательно проверить другие статьи в Магия вычислений Действительно

Оригинал: “https://dev.to/kruzzy/why-is-graph-theory-so-amazing-part-1-5ii”