以下に、一般的なグラフ アルゴリズムの JavaScript の例を示します。
1. 幅優先検索 (幅優先検索、BFS):
function BFS(graph, start) {
const visited = new Set();
const queue = [start];
while (queue.length > 0) {
const vertex = queue.shift();
visited.add(vertex);
console.log(vertex);
const neighbors = graph[vertex];
for (const neighbor of neighbors) {
if (!visited.has(neighbor)) {
queue.push(neighbor);
}
}
}
}
const graph = {
A: ['B', 'C'],
B: ['A', 'D'],
C: ['A', 'E'],
D: ['B', 'E'],
E: ['C', 'D']
};
BFS(graph, 'A');
2. 深さ優先検索 (DFS):
function DFS(graph, start) {
const visited = new Set();
function dfsHelper(vertex) {
visited.add(vertex);
console.log(vertex);
const neighbors = graph[vertex];
for (const neighbor of neighbors) {
if (!visited.has(neighbor)) {
dfsHelper(neighbor);
}
}
}
dfsHelper(start);
}
const graph = {
A: ['B', 'C'],
B: ['A', 'D'],
C: ['A', 'E'],
D: ['B', 'E'],
E: ['C', 'D']
};
DFS(graph, 'A');
3. 最短経路アルゴリズム (ダイクストラのアルゴリズムなど):
function Dijkstra(graph, start) {
const distances = {};
const visited = new Set();
const queue = new PriorityQueue();
for (const vertex in graph) {
distances[vertex] = vertex === start ? 0 : Infinity;
queue.enqueue(vertex, distances[vertex]);
}
while (!queue.isEmpty()) {
const { element: vertex } = queue.dequeue();
if (visited.has(vertex)) {
continue;
}
visited.add(vertex);
const neighbors = graph[vertex];
for (const neighbor in neighbors) {
const distance = distances[vertex] + neighbors[neighbor];
if (distance < distances[neighbor]) {
distances[neighbor] = distance;
queue.updatePriority(neighbor, distance);
}
}
}
return distances;
}
const graph = {
A: { B: 5, C: 2 },
B: { A: 5, C: 1, D: 3 },
C: { A: 2, B: 1, D: 2 },
D: { B: 3, C: 2 }
};
console.log(Dijkstra(graph, 'A'));
これらは、いくつかの一般的なグラフ アルゴリズムの JavaScript の例です。グラフ アルゴリズムは、ネットワーク接続、パス検索、最短パスなどの問題を解決するのに非常に役立ちます。
お役に立てば幸いです! さらにご質問がございましたら、お気軽にお問い合わせください。