16
Решение задачи о восьми ферзях при помощи графов Работа Горулёвой К. и Хинели Д.

решение задачи о восьми ферзях

  • Upload
    olgatu

  • View
    495

  • Download
    9

Embed Size (px)

DESCRIPTION

Решение задачи о размещении на шахматной доске 8 ферзей так, чтобы ни один не был под угрозой

Citation preview

Page 1: решение задачи о восьми ферзях

Решение задачи о восьми ферзях

при помощи графов

Работа Горулёвой К. и Хинели Д.

Page 2: решение задачи о восьми ферзях

«Расставить восемь ферзей так, чтобы ни один из них не стоял под боем другого.»

Формулировка задачи

Page 3: решение задачи о восьми ферзях

История решения

сформулирована М. Беццелем в 1848 г.

Доктор Ф. Наук нашел 60 решений

Карл Гаусс нашел 72 решения

Доктор Ф. Наук нашел 92 решение

1874 г, В. Аренс доказал, что это все решения

Page 4: решение задачи о восьми ферзях

Граф – это множество вершин (узлов), соединенных ребрами.

Решение

Предлагается два решения: обход графа в

ширину обход графа в

глубину

Page 5: решение задачи о восьми ферзях

Обход графа в ширину

Page 6: решение задачи о восьми ферзях

Обход графа в ширину

Page 7: решение задачи о восьми ферзях

обход начинается из

вершины №1 не просмотренные вершины

окрашены в белый цвет просмотренные вершины – в

серый если просмотрена и

вершина, и ее соседи – в черный

минусы: решение долгое

Обход графа в ширину

Page 8: решение задачи о восьми ферзях

Обход графа в ширину

Page 9: решение задачи о восьми ферзях

Обход графа в глубину

с возвратом

Page 10: решение задачи о восьми ферзях

Обход графа в глубину

Page 11: решение задачи о восьми ферзях

Все решения задачи

15863724 16837425 17468253 17582463 24683175 25713864 25741863 26174835 26831475 27368514 27581463 28613574 31758246 35281746 35286471

35714286 35841726 36258174 36271485 36275184 36418572 36428571 36814752 36815724 36824175 37285146 37286415 38471625 41582736 41586372

42586137 42736815 42736851 42751863 42857136 42861357 46152837 46827135 46831752 47185263 47382516 47526138 47531682

48136275 48157263 48531726 51468273 51842736 51863724 52468317 52473861 52617483 52814736 53168247 53172864 53847162 57138642 57142863

Page 12: решение задачи о восьми ферзях

Все решения задачи

57248136 57263148 57263184 57413862 58413627 58417263 61528374 62713584 62714853 63175824 63184275 63185247 63571428 63581427 63724815

63728514 63741825 64158273 64285713 64713528 64718253 68241753 71386425 72418536 72631485 73168524 73825164 74258136 74286135 75316824

82417536

82531746

83162574

84136275

48136275 48157263 48531726 51468273 51842736 51863724 52468317 52473861 52617483 52814736 53168247 53172864 53847162 57138642 57142863

Page 13: решение задачи о восьми ферзях

- раздел дискретной математики, изучающий свойства графов.

Теория графов

Леонард Эйлер, 1736 г.

Page 14: решение задачи о восьми ферзях

 Геоинформационные системы (ГИС)

Что если? (моделирование, что произойдет, если добавить новую дорогу)

Химия компьютерная химия хемоинформатика

Информатика и программирование Экономика Логистика Коммуникационные и транспортные системы

Применение теории

Page 15: решение задачи о восьми ферзях

Спасибо за внимание!

Page 16: решение задачи о восьми ферзях

program Doclad; const N=8; type index=1..N;

rasstan= array [index] of 0..N; var x:rasstan; Count:word; function p(var x:rasstan;k,y:index):boolean; var i:index; begin i:=1; while (i<k)and(y<>x[i])and(abs(k-i)<>abs(y-x[i])) do inc(i); p:=i=k end; procedure obr(k:index); var i,y:index; begin for y:=1 to N do if p(x,k,y) then

begin x[k]:=y; if k=N then begin for i:=1 to N do write(x[i]);writeln;inc(Count) end; obr(k+1)end

end; begin Count:=0; writeln('Расстановки ',N,' ферзей:'); obr(1); writeln('Всего ',Count,' расстановок') end.

Программа на языке ПаскальОтлажена в среде PascalABC.NET