Professional Documents
Culture Documents
Федюк_Фес-32_лаб9_СПП
Федюк_Фес-32_лаб9_СПП
Федюк_Фес-32_лаб9_СПП
Звіт
Виконав:
Студент групи ФеС-32
Федюк Ростислав
Перевірив:
Доц. Франів В. А.
Львів-2024
Завдання:
Код програми
;; Представлення графа у вигляді списку ребер (вага, початкова вершина, кінцева
вершина)
(defparameter *edges* '((7 0 1) (5 0 3) (8 1 2) (7 1 3) (9 1 4) (5 2 4) (6 3 4) (8 3 5) (9 4 5)))
;; Алгоритм Краскала
(defun kruskal (edges num-vertices)
(let ((sorted-edges (sort-edges edges))
(parent (make-array num-vertices :initial-element 0))
(rank (make-array num-vertices :initial-element 0))
(mst '()))
(dotimes (i num-vertices)
(setf (aref parent i) i))
(dolist (edge sorted-edges)
(multiple-value-bind (weight u v) edge
(unless (union-sets u v parent rank)
(push edge mst))))
mst))
;; Приклад використання
(let ((num-vertices 6))
(format t "Minimum Spanning Tree: ~a~%" (kruskal *edges* num-vertices)))