Классические задачи Computer Science на языке Java
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  Классические задачи Computer Science на языке Java

Данила
Даниладәйексөз келтірді8 ай бұрын
Граф — это абстрактная математическая конструкция, которая применяется для моделирования реальной задачи путем ее разделения на множество связанных узлов.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Генетические алгоритмы — не самое хорошее решение для любых задач. Они зависят от трех частично или полностью стохастических (случайно определенных) операций: отбора, кроссинговера и мутации, — поэтому могут не найти оптимального решения в разумные сроки. Для большинства задач существуют более детерминированные алгоритмы, дающие лучшие гарантии. Но бывают задачи, для которых не существует быстрых детерминированных алгоритмов. В таких случаях генетические алгоритмы — хороший выбор.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Возможно, вы заметили, что у алгоритма Дейкстры есть некоторое сходство с алгоритмом Ярника. Оба они жадные, и при желании их можно реализовать, используя довольно похожий код. Другой алгоритм, похожий на алгоритм Дейкстры, — это A* из главы 2. A* можно рассматривать как модификацию алгоритма Дейкстры. Добавьте эвристику и ограничьте алгоритм Дейкстры поиском только одного пункта назначения — и оба алгоритма окажутся одинаковыми.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Алгоритм Дейкстры предназначен для графов с положительными весами. Графы с отрицательно взвешенными ребрами могут создать проблему и потребуют модификации или альтернативного алгоритма.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Алгоритм Дейкстры выполняет следующие шаги. 1. Добавить начальную вершину в очередь с приоритетом. 2. Извлечь из очереди с приоритетом ближайшую вершину (вначале это только исходная вершина) — назовем ее текущей. 3. Исследовать все соседние вершины, связанные с текущей. Если они ранее не были записаны или если ребро предлагает новый кратчайший путь, то для каждой из этих вершин записать расстояние до начальной вершины, указать ребро, соответствующее этому расстоянию, и добавить новую вершину в очередь с приоритетом. 4. Повторять шаги 2 и 3 до тех пор, пока очередь с приоритетом не опустеет. 5. Вернуть кратчайшее расстояние до каждой вершины от начальной и путь, позволяющий добраться до каждой из них.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Алгоритм Ярника считается жаднымалгоритмом, потому что всегда выбирает ребро с наименьшим весом.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Алгоритм Ярника не всегда правильно работает для графов с направленными ребрами. Он не подействует и для несвязных графов.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Алгоритм Ярника для поиска минимального связующего дерева решает задачу посредством деления графа на две части: вершины в формируемом минимальном связующем дереве и вершины, еще не входящие в минимальное связующее дерево. Алгоритм состоит из следующих шагов. 1. Выбрать произвольную вершину для включения в минимальное связующее дерево. 2. Найти ребро с наименьшим весом, соединяющее минимальное связующее дерево с вершинами, еще не входящими в минимальное связующее дерево. 3. Добавить вершину, расположенную на конце этого минимального ребра, к минимальному связующему дереву. 4. Повторять шаги 2 и 3, пока все вершины графа не будут включены в минимальное связующее дерево.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Связныйграф — это граф, для которого существует способ добраться из любой вершины в любую другую вершину (все графы, которые мы рассматриваем в этой главе, связные). Связующеедерево — это дерево, которое соединяет все вершины графа. Минимальноесвязующеедерево — это дерево, которое соединяет все вершины во взвешенном графе и имеет минимальный общий вес по сравнению с другими связующими деревьями. Для каждого взвешенного графа можно найти минимальное связующее дерево.
Комментарий жазу
Анжелика
Анжеликадәйексөз келтірді9 ай бұрын
Дерево — это особый вид графа, в котором между любыми двумя вершинами существует один и только один путь. Это подразумевает, что в дереве нет циклов (такие графы иногда называют ациклическими). Цикл можно представить как петлю: если возможно из начальной вершины пройти по всему графу, никогда не проходя повторно ни по одному из ребер, и вернуться к начальной вершине, то в этом графе есть цикл. Любой граф, не являющийся деревом, может им стать, если удалить из него некоторые ребра.
Комментарий жазу