Курсовая работа: Определение связности графа на Лиспе

((smezver (cadar sreb) (caar sreb) snaid snov) ;смежнаявершина

(cons (caar sreb) (smez snaid snov (cdr sreb)))) ;добавлениевсписок

(t (smez snaid snov (cdr sreb))))) ;пропускребра

;поиск в ширину (список найденных вершин, список новых найденных вершин,

; вершина для поиска, список ребер)

(defun shir(snaid snov y sreb)

(cond

((null snov) nil) ;не найдено ни одной новой вершины

((member y snov) t) ;вершина найдена

(t (shir (append snaid snov) (smez snaid snov sreb) y sreb)))) ;добавление новых вершин

;поиск пути (первая вершина, вторая вершина, список ребер)

(defun path(x y sreb)

(shir nil (list x) y sreb)) ;поиск в ширину

;перебор вершин (первая вершина, список вершин, список ребер)

(defun perebor(fver sver sreb)

(cond

((null sver) t) ;конец перебора

((path fver (car sver) sreb) (perebor fver (cdr sver) sreb)) ;путьнайден

(t nil))) ;нет пути

;определение связанности графа(список вершин, список ребер)

(defun svgraf(sver sreb)

(perebor (car sver) (cdr sver) sreb)) ;перебор вершин и поиск пути от первой вершины ко всем остальным


ПРИЛОЖЕНИЕ 2

Результаты работы программы

Тест: 1

Выражение: (svgraf '(v1 v2 v3 v4) '((v1 v2) (v2 v3) (v3 v4)))

Результат: Т

Тест: 2

Выражение: (svgraf '(v1 v2 v3 v4) '((v1 v2) (v2 v4) (v2 v3) (v3 v4) (v1 v4) (v3 v4)))

К-во Просмотров: 240
Бесплатно скачать Курсовая работа: Определение связности графа на Лиспе