Търсене краткия път

Обикновено, по пътя на проблема с търсенето графика може да се формулира по следния начин: намери най-добрия маршрут. При най-добрия маршрут, като правило, се разбере най-краткия. Намерете най-краткия маршрут възможно изборът на всички намерен. Въпреки това, не е необходимо да се търсят всички маршрути.

Можете да го направите по друг начин: при избора на следващата точка, за да се провери дали дължината няма да надвишава дължината на маршрута, образуван вече са намерили пътя, ако този етап ще бъдат включени в маршрута; Ако той надвишава, че този въпрос трябва да се пропуска, а изберете друг.

По този начин, след като се установи, че първият път, програмата ще търси само тези клонове на графиката, които могат да подобрят решение намери, като начин, като маршрутът вече образуваните вече е намерен.

Обява 12.6 показва процедура, която използва процедура по стъпка, която извършва подбора на следващата точка, така че можете да търсите по пътя на минимална дължина.

Обявата 12.6. Търсене краткия път

процедура TForm1.Button1Click (Sender: TObject);

// Karta.map [Ь, й] не е 0, ако

// точки I и J са свързани

// Road - номера на картата на точки

вкл: масив [1..N] на булева; // [1] вкл е вярно, ако точката

// брой и е включена в пътя

// начални и крайни точки

намерено: булева; дъл: цяло число; // дължина намерено (минимум)

// маршрута> c_len: цяло число; // текущата дължина (образувани)

// Изберете следващата точка