- Thut ton tm kiếm theo chiu rng (thường gọi l BFS - Breadth-First Search) l mt thut ton duyệt bt đầu t gc, sau đ lần lưt xét qua cc node mt theo ưu tiên v đ sâu t nh đến ln - Ban đầu, đnh gc đưc đưa vo hng đi (queue) Sau đ, thut ton ly đnh gc khi hng đi, khm ph cc đnh k n v đưa cc đnh k ny vo hng đi Qu trnh ny tiếp tục hng đi trng
Qu trnh duyệt BFS đưc minh ho sau:
26 Trên đ th, BFS bt đầu t đnh gc (đnh m ta bt đầu duyệt) v duyệt qua tt c cc đnh k n Sau đ, BFS tiếp tục duyệt qua cc đnh k cc đnh đ duyệt, duyệt hết tt c cc đnh c thể
IV Code web l thuyt IDS Đnh nghĩa ISS body { font-family: Arial, sans-serif; margin: 0; padding: 0; } container { margin: 20px; } h1 { font-size: 36px; margin-bottom: 20px; color: #333; text-align: center; } p { font-size: 20px; line-height: 1.5; margin-bottom: 20px; color: #555; } img { max-width: 100%; margin-bottom: 20px; 27 display: block; margin-left: auto; margin-right: auto; } Đnh nghĩa IDS- Thut ton IDS mở rng nt xa gc nht (sâu nht) ging DFS, không mở rng qu mt gii hn no đ - Gii hn đ sâu đưc tăng dần tm đưc lời gii
Quá trình duyệt IDS đưc minh ho sau:
Trên hnh, IDS bt đầu t đnh gc (đnh m ta bt đầu duyệt) v duyệt theo chiu sâu vi gii hn tăng dần t tm đưc đch
V Code web thut ton BFS Thut ton BFS body { font-family: Arial, sans-serif; margin: 20px; } h1 { 28 text-align: center; } form { text-align: center; } label { font-size: 18px; } input[type="text"] { width: 300px; padding: 8px; font-size: 16px; } input[type="submit"] { padding: 8px 16px; font-size: 16px; cursor: pointer; background-color: #4CAF50; color: #fff; border: none; border-radius: 4px; } input[type="submit"]:hover { background-color: #45a049; } #result { margin-top: 20px; text-align: center; font-size: 18px; } Thut ton BFS Nhp cc cnh (VD: "A-B,C-D,E-F"): Đnh bt đầu: Đnh kết thc: 29 document.getElementById('bfsForm').addEventListener('submit', function(event) { event.preventDefault(); var edgesInput = document.getElementById('edges').value; var startInput = document.getElementById('start').value; var endInput = document.getElementById('end').value; // Chuyển đổi cnh thnh mng cc cnh var edges = edgesInput.split(','); // Thc thut ton BFS v ly đường var path = bfs(edges, startInput, endInput); // Hiển th đường trang var resultElement = document.getElementById('result'); if (path.length > 0) { resultElement.textContent = 'Đường đi: ' + path.join(' -> '); } else { resultElement.textContent = 'Không tm thy đường đi.'; } }); function bfs(edges, start, end) { // Xây dng danh sch k t cc cnh var graph = buildGraph(edges); // To hng đi cho BFS var queue = []; queue.push([start]); // Theo di cc đnh đ thăm var visited = new Set(); visited.add(start); while (queue.length > 0) { var path = queue.shift(); var node = path[path.length - 1]; if (node === end) { return path; } // Ly cc đnh k đnh ti 30 var neighbors = graph[node]; for (var i = 0; i < neighbors.length; i++) { var neighbor = neighbors[i]; if (!visited.has(neighbor)) { // Đnh du đnh k l đ thăm visited.add(neighbor); // To mt đường mi v đưa vo hng đi var newPath = path.slice(); newPath.push(neighbor); queue.push(newPath); } } } // Không tm thy đường return []; } function buildGraph(edges) { var graph = {}; for (var i = 0; i < edges.length; i++) { var edge = edges[i].trim(); var nodes = edge.split('-'); var node1 = nodes[0]; var node2 = nodes[1]; if (!graph[node1]) graph[node1] = } if (!graph[node2]) graph[node2] = } { []; { []; // Thêm cnh vo danh sch k graph[node1].push(node2); graph[node2].push(node1); } return graph; } 31 VI Code web thut ton IDS Duyệt thut ton IDS body { font-family: Arial, sans-serif; margin: 20px; } container { margin: auto; /* Căn gia theo chiu ngang */ max-width: 400px; /* Điu chnh kch thưc tùy */ } label { font-size: 18px; margin-bottom: 10px; display: block; /* Hiển th nhn mt dòng */ } h1 { text-align: center; } form { text-align: center; } input[type="text"], input[type="number"] { padding: 8px; font-size: 16px; border: 1px solid #ccc; border-radius: 4px; width: 100%; margin-bottom: 10px; box-sizing: border-box; /* Đm bo kch thưc input bao gm c đường vin */ } 32 button { padding: 10px 20px; font-size: 16px; background-color: #4CAF50; color: #fff; border: none; border-radius: 4px; cursor: pointer; width: 100%; } button:hover { background-color: #45a049; } #result { margin-top: 20px; font-size: 18px; text-align: center; } Thut ton IDS Nhp cc cnh (VD: "A-B,C-D,E-F"): Đnh bt đầu: Đnh kết thc: Gii hn đ sâu: Duyệt IDS 33 document.getElementById('idsForm').addEventListener('submit', function(event) { event.preventDefault(); runIDS(); }); function runIDS() { var edgesInput = document.getElementById('edges').value; var startInput = document.getElementById('start').value; var goalInput = document.getElementById('goal').value; var depthInput = parseInt(document.getElementById('depth').value); // Chuyển đổi cnh thnh mng var edges = edgesInput.split(','); // To đ th t cc cnh var graph = {}; edges.forEach(function(edge) { var vertices = edge.split('-'); var vertex1 = vertices[0].trim(); var vertex2 = vertices[1].trim(); if (!graph[vertex1]) { graph[vertex1] = []; } if (!graph[vertex2]) { graph[vertex2] = []; } graph[vertex1].push(vertex2); graph[vertex2].push(vertex1); }); // Duyệt IDS var result = iterativeDeepeningSearch(graph, startInput, goalInput, depthInput); // Hiển th kết qu var resultElement = document.getElementById('result'); if (result) { resultElement.textContent = 'Đường đi: ' + result.join(' -> '); } else { resultElement.textContent = 'Tm không thy đường t đnh bt đầu đến đnh kết thc vi gii hn đ sâu đ cho.'; } 34 } // Thut ton IDS function iterativeDeepeningSearch(graph, start, goal, maxDepth) { for (var depth = 0; depth