Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.20;
Скачать: CL | DM;

Вниз

Ужасно интересная задача о которой вряд-ли кто слышал :)   Найти похожие ветки 

 
Step[B.M.] ©   (2003-09-28 23:21) [0]

Допустим у нас есть Таблица клиентов
ID_K NAME_K
1 Иванов
2 Петров
3 Сидоров
40 Крюков
5 Гаков
6 Тыков

и Табцица их знакомств в виде

ID_K1 IDK2
1 2 //Значит Иванов знаком и Петровым
2 1 //И Петров знаком и Ивановым
2 40 //Петров знаком с Крюковым
5 40 //И Гаков знаком с Крюковым
6 3 // И т.д.
6 5
40 6

ВНИМАНИЕ!!! ЗАДАЧА !!!
Построить алгоритм, которий бы показывал цепочку знакомств Иванова (1) и Гакова (5) (Если такова существует) К стати их может быть несколько. Да еще сделать так, чтобы не попасть в рекурсию.


 
Юрий Зотов ©   (2003-09-28 23:29) [1]

Уточните:
1. Это таблица БД, или просто таблица?
2. Что значит "цепочка знакомств"? Дайте ее пример.
3. Может ли в таблице быть избыточность (если Иванов знаком с Петровым, то автоматически и Петров знаком с Ивановым, поэтому вторая строка избыточная). Или взаимное знакомство не автоматическое?
4. Это домашнее задание, лабораторка или уже курсовой?
:о)


 
Alex Konshin ©   (2003-09-29 00:09) [2]

Типичная задача из теории графов. Дана матрица инциденций.


 
Ihor Osov'yak ©   (2003-09-29 00:33) [3]

Волновый алгоритм.

Отведем каждому человеку ячейку.

Возбуждаем волну в 1. На каждом шаге волна может идти от ячейки "под волной" к соседней свободной. В каждой ячейке запоминаем номер шага, на котором к нее пришла волна - для чего, станет понятно дальше

шаг волна
1 1->2 (в ячейке 2 запомнили 1)
2 2->40 (на 1 не идем, так как 1 уже было под волной), в 40 запомнили 2
3 40->6 (в 6 запомнили 3)
4 6->3, 6->5 ( в 3 и 5 запомнили 4)

5 - конечная точка, значит построение волны оканчиваем..

Цепочку получаем, анализируя числа, которые запомнили в ячейках ( к ячейке в которой записано 4 волна пришла от ячейки, в которй записано 3, к ячейке с 3 - волна от ячейке с 2 и тд):

5-6-40-2-1


 
Ihor Osov'yak ©   (2003-09-29 00:34) [4]

Зы - алгоритм этот слышал более двадцати лет назад.. Даже в некоторых практических задачах пришлось применять..


 
Ihor Osov'yak ©   (2003-09-29 00:39) [5]

Кажется алгоритм именовался "Волновой алгоритм Ли"


 
Toxyc   (2003-09-29 00:44) [6]

procedure TForm1.Button1Click(Sender: TObject);
var t,i: integer;
begin
p:= StrToInt(Edit1.Text); //формируем пару знакомств
q:= StrToInt(Edit2.Text); //формируем пару знакомств
t:= id[p];
if t<>id[q] then begin
for i:= 0 to 9 do begin
if id[i]=t then id[i]:=id[q]; //разбиваем на группы связности
end;
end;
end;

в результате все, кто знаком друг с другом будут обознчаться одной цифрой


 
SergP ©   (2003-09-29 08:53) [7]


> Ihor Osov"yak © (29.09.03 00:34) [4]
> Зы - алгоритм этот слышал более двадцати лет назад.. Даже
> в некоторых практических задачах пришлось применять..


А я когда-то пытался написать прогу для трассировки печатных плат используя этот алгоритм на.... Спектруме (это было еще в спектрумовские времена). Даже написал вполне работоспособный кусок проги...

Кстати никто не страдал аналогичными вещами на дельфи?


 
asp ©   (2003-09-29 09:40) [8]

На DB2 решается одним запросом :)


 
pasha_golub ©   (2003-09-29 10:35) [9]

Скажем проще, алгоритм Дейкстры, однако не тот который про поиск кратчайшего пути


 
BillyJeans ©   (2003-09-29 11:37) [10]

данная задача решается на Прологе...


 
Mike Kouzmine ©   (2003-09-29 11:39) [11]

... одним предикатом (не считая исходных)


 
Step[B.M.] ©   (2003-10-01 08:35) [12]

> Юрий Зотов © (28.09.03 23:29) [1]
>3. Может ли в таблице быть избыточность

Может быть. Вы ведь знаете Майкла Джексона, а он Вас, наверное, нет.
>4. Это домашнее задание, лабораторка или уже курсовой?
Ни одно из них :)

P.S. Для себя я эту задачу решил, правда, кривовато.
Но Всем большое спасибо за возможность узнать как это делают другие.

Действительно, МАСТЕРА.



Страницы: 1 вся ветка

Текущий архив: 2003.10.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
14-65601
olookin
2003-09-30 08:32
2003.10.20
Похмелье и его влияние на личность


6-65565
shark
2003-08-23 20:33
2003.10.20
работа с почтовым ящиком через Delphi


1-65439
Xaksorz
2003-10-07 17:09
2003.10.20
Звук


14-65589
ZeroDivide
2003-10-02 10:33
2003.10.20
Космические корабли, железная дорога и лошади


3-65375
DBQuest
2003-09-28 14:54
2003.10.20
Как подключить БД?