Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Лекция VI

Читайте также:
  1. Амплитудная селекция
  2. Беседа как метод обучения детей дошкольного возраста диалогической речи (лекция).
  3. Вводная лекция
  4. Вводная лекция
  5. Вопрос 1.Лекция.
  6. Воскресная лекция Шрилы Радханатхи Свами в Киеве о Бхакти Тиртхе Свами
  7. Временная селекция
  8. Вступительная лекция.
  9. Вступительная лекция.
  10. ВТОРАЯ ЛЕКЦИЯ

Поиск достижимых вершин графа.

 

 

Пример графа

 

 

 

Графы-способ формализовать всевозможные схемы.

 

 

Математики считают, что граф состоит из двух связанных между собой множеств. Первое- множество вершин (чаще всего изображается в виде кружочков с цифрами). Вершина: технологическая установка города на атласе автомобильных дорог, станция метрополитена и т.д.

Второе- множество дуг (чаще всего изображается в виде стрелочек).

Дуга: трубы, дороги, туннели.

 

Графы бывают направленные и ненаправленные. Если граф направленный, дуги обозначаются стрелочками (транспортная схема с односторонним движением).

 

Один из способов представления графа в памяти компьютера называется матрицей смежности.

В 4-ю из 1-й

n i A к у д а

5 о 0 0 0 1 0

т 1 0 1 0 0

к 0 0 0 1 0

у 0 1 0 0 1

д 0 0 0 0 0

а

 

Задача: граф задан матрицей смежности; необходимо назвать все вершины графа, в которые можно попасть по стрелочкам (дугам) из заданной вершины.

 

Схематичное описание алгоритма поиска достижимых вершин.

 

Алгоритм поиска достижимых вершин графа является рекурсивным. Схематично его можно описать как:

 

Шаг 1: найти все вершины непосредственно связанные со стартовой вершиной (идём по стрелочкам);

 

Шаг 2(рекурсивный): для каждой найденной вершины рекурсивно выполнить алгоритм поиска достижимых вершин, рассматривая уже найденную вершину как стартовую.

 

В процессе работы все найденные вершины нужно объединять вместе.

 

Примитивный алгоритм должен быть снабжён проверками, предотвращающий бесконечную рекурсию.

 

←Бесконечная рекурсия.

 

Sub click()

Dim n As Integer, i As Integer, j As Integer, count As Integer

n=cells(2,1) ‘ n – это количество вершин (ячеек)

ReDim A(n,h) As Integer ‘ двумерный массив А

For i=1 To n:for j=1 To n двойной цикл перебираются строки, столбцы, ячейки

A(i,j)=cells(1+i,2+j)

Next j,i

i=cells(2,2):count=0 ‘ счётчик считает найденные вершины начиная с 0

call spisok(n,i,count,A()) ‘ i – стартовая величина, Call – вызов подпрограммы, А() –матрица смежности.

End Sub

 

Подпрограмма (процедура), вызывает сама себя, (рекурсивная):

 

Sub spisok (n As Integer, i_start As Integer, count As Integer, A() As Integer)

Dim i As Integer, j As Integer, k As Integer ‘ дополнительные переменные

For j=1 to n

If A(i_start,j)=1 then

count=count+1’увеличивает счётчик на единицу

cells(3+count,2)=j ‘ записывает в свободную ячейку

For k=1 To n:A(k,j)=-Abs(A(k,j)):Next k ‘Отвечает за то, чтобы мы не могли попасть в найденную вершину из другой вершины

 

call spisok (n,j,count,A()) ‘ программа вызывает сама себя, i- стартовая величина,не исходная,а которую мы нашли

End If

Next j

End Sub

 

 

for k=1 To n:A(k,j)=-Abs(A(k,j)):Next k

1 соответствует разорванной стрелке => больше в найденную вершину не попадём.

 

Задача о Ханойских башнях.

(классическая задача на использование рекурсии)

 

Предыстория:

Исторически данная задача возникла как математическая головоломка-шутка, замаскированная под старинную легенду.

 

Старинная легенда гласит: «Однажды, при сотворении мира, Бог создал три хрустальных (алмазных) стержня, на один из которых помещал 64 диска разных диаметров так, чтобы они образовали пирамиду. Эти диски и стержни находятся в древнем храме. Жрецы этого храма работают день и ночь и переносят диски с одного стержня на другой, руководствуясь двумя правилами:

 

1) Диски можно брать и переносить только по одному.

 

2) Нельзя помещать диск большего диаметра над диском меньшего диаметра.

 

Как только жрецы перенесут все диски со стержня А на стержень С, наступит конец света.

 




Дата добавления: 2015-01-07; просмотров: 20 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав