Для отображения веса ребра графа в алгоритме Дейкстры в JavaScript, вам нужно создать структуру данных, которая будет хранить информацию о ребрах и их весах. Обычно это делается с помощью объектов, массивов или классов.
Прежде всего, вам нужно представить граф в коде. Например, можно создать объекты для вершин и использовать массив для хранения ребер с их весами. Вот пример такой структуры данных:
// Граф const graph = { 'A': { 'B': 5, 'C': 2 }, 'B': { 'A': 5, 'C': 1, 'D': 3 }, 'C': { 'A': 2, 'B': 1, 'D': 6 }, 'D': { 'B': 3, 'C': 6 } };
В этом примере graph
представляет собой граф, где ключами являются вершины, а значениями являются другие объекты, где ключами являются смежные вершины, а значениями - веса ребер.
В алгоритме Дейкстры для каждой вершины мы храним информацию о ее текущем расстоянии от начальной вершины, а также о предыдущей вершине на пути к данной вершине. Теперь нам нужно модифицировать структуру данных для вершин графа, чтобы учитывать вес ребра.
// Информация о вершине class Node { constructor(name, weight, previousNode) { this.name = name; // Название вершины this.weight = weight; // Текущее расстояние от начальной вершины this.previousNode = previousNode; // Предыдущая вершина на пути к данной вершине } } // Инициализация вершин графа const nodes = {}; Object.keys(graph).forEach(nodeName => { nodes[nodeName] = new Node(nodeName, Infinity, null); });
В этом коде мы создаем класс Node
, который содержит информацию о вершине. Мы инициализируем каждую вершину графа с бесконечным расстоянием и без предыдущей вершины.
Теперь вы можете добавить логику алгоритма Дейкстры, в которой вы будете обновлять вес ребра при проходе через каждую вершину:
// Алгоритм Дейкстры function dijkstra(graph, startNode) { // Инициализация начальной вершины nodes[startNode].weight = 0; let visitedNodes = new Set(); let currentNode = startNode; while (currentNode) { visitedNodes.add(currentNode); Object.entries(graph[currentNode]).forEach(([neighbour, weight]) => { const distance = nodes[currentNode].weight + weight; if (distance < nodes[neighbour].weight) { nodes[neighbour].weight = distance; nodes[neighbour].previousNode = currentNode; } }); currentNode = null; let minDistance = Infinity; Object.entries(nodes).forEach(([nodeName, { weight }]) => { if (!visitedNodes.has(nodeName) && weight < minDistance) { minDistance = weight; currentNode = nodeName; } }); } return nodes; } // Вызов алгоритма Дейкстры, указав начальную вершину const result = dijkstra(graph, 'A'); console.log(result);
Этот код показывает, как выполнить алгоритм Дейкстры для графа с весами ребер. Когда алгоритм завершится, для каждой вершины вы увидите ее текущее расстояние от начальной вершины и путь к ней через предыдущие вершины.
Надеюсь, эта информация поможет вам понять, как показать вес ребра графа в алгоритме Дейкстры в JavaScript. Если у вас есть еще вопросы, не стесняйтесь задавать!