avva: (Default)
avva ([personal profile] avva) wrote2002-08-07 08:54 pm

смерть Дейкстры

Умер Дейкстра, один из самых уважаемых специалистов в области дизайна языков программирования. Один из авторов Алгола. Автор знаменитой статьи Goto Statement Considered Harmful, и многих других знаменитых и менее знаменитых статей. Автор алгоритма Дейкстры: .

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

В процессе выполнения алгоритма будем хранить множество вершин S, содержащее вершины, для которых минимальное расстояние от x0 уже найдено. V обозначает множество всех вершин. Будем также хранить массив Shortest(x), для каждой вершины x хранящий текущее значение минимального расстояния от x0. Curr - переменная, хранящая рассматриваемую в данный момент вершину. Length(x,y) означает длину ребра из x в y.

Алгоритм:
1. S = {x0}, Shortest(x0) = 0, Shortest(x) = бесконечность для всех остальных вершин x, Curr = x0.
2. Для каждой вершины x вне S (т.е. для всех вершин в V\S), если есть ребро из Curr в x, и если Shortest(Curr) + Length(Curr,x) < Shortest(x), то заменим Shortest(x) = Shortest(Curr) + Length(Curr,x).

Иными словами, если текущая вершина позволяет добраться до какой-то вершины вне S быстрее, чем нам до сих пор было известно для этой вершины, то подправляем наше значение минимального расстояния до этой вершины с учётом этого.

3. Из всех вершин вне S выбираем какую-то с минимальным значением Shortest(x) и добавляем в S, а также назначаем эту вершину Curr (текущей).

4. Если ещё остались вершины вне S, идём к пункту 2; если нет, заканчиваем работу, и тогда для каждой вершины x Shortest(x) содержит минимальное расстояние от x0 до x.

В основном, подозреваю, студенты в наши дни знают его имя по этому алгоритму, который они проходят на том или ином курсе.

Автор целой эпохи, как ни банально это звучит.

R.I.P.
(deleted comment)

Re:

[identity profile] avva.livejournal.com 2002-08-07 12:58 pm (UTC)(link)
Очень странно, но не могу пока найти сетевой источник. Но сведения вполне надёжные, кажется.
[livejournal.com profile] squadette тоже об этом написал, может, у него есть линк, я его спросил.

[identity profile] 37.livejournal.com 2002-08-07 11:38 am (UTC)(link)
А мне при упоминании его имени прежде всего вспоминаются "Дисциплина программирования" и структурное программирование вообще.
Жаль очень.

[identity profile] pingva.livejournal.com 2002-08-07 11:55 am (UTC)(link)
очень жаль, да.

Печаль

[identity profile] sobaker.livejournal.com 2002-08-07 12:02 pm (UTC)(link)
Нам выпало жить в тот промежуток времени, когда умирают основоположники

Если отладка - процесс удаления ошибок, то программиро

[identity profile] anton.livejournal.com 2002-08-07 12:24 pm (UTC)(link)
:(

По-моему, всё-же, сейчас студенты знают его имя до того, как проходят соотв. алгоритм.
А откуда информация?

Re: Если отладка - процесс удаления ошибок, то программи

[identity profile] avva.livejournal.com 2002-08-07 01:02 pm (UTC)(link)
Ну это зависят от того, где учатся студенты, в действительно хороших местах знают и до.

Ссылку см. выше в комментах.

[identity profile] eugen.livejournal.com 2002-08-07 03:00 pm (UTC)(link)
Все там будем...

[identity profile] ex-ilyavinar899.livejournal.com 2002-08-07 03:01 pm (UTC)(link)
Он также изобрел семафоры. P и V - начальные буквы каких-то голландских слов.

[identity profile] piggymouse.livejournal.com 2002-08-07 11:10 pm (UTC)(link)
Думаю, важно также упомянуть "The Discipline Of Programming".

Re:

[identity profile] avva.livejournal.com 2002-08-07 11:13 pm (UTC)(link)
Да, спасибо. Конечно, мой список был неполным совершенно, я упомянул лишь то, что мне в первую очередь приходит в голову.