белман-форд

Модератор: Absurd

Ответить
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

Народ , помогите. Пытаюсь написать на Яве алгоритм Белмана-Форда
Вот алгоритм
INPUT: G = (V, E), s, t
n = |V|

ARRAY: OPT[0..n, V]
FOREACH v  V
OPT[0, v] = 

OPT[0,s] = 0
FOR i = 1 to n
FOREACH v  V
m = OPT[i-1, v]
m' = 
FOREACH (u, v)  E
m' = min (m', OPT[i-1, u] + c[u,v])
OPT[i, v] = min(m, m')

RETURN OPT[n-1, t]

А вот мой метод

Код: Выделить всё

public boolean FindShortestPath()
	{
		int m=0;
		int mTag=0;
		
		for (int i=0;i<graph.returnNumOfVertic();i++)
			OPT[0][i]=BIG_NUMBER; //equals infinity
		OPT[0][0]=0;
		for (int vertexIndex=1;vertexIndex<graph.returnNumOfVertic();vertexIndex++)
		{
			for (int v = 0; v < graph.returnNumOfVertic(); v++)
			  { 
				AdjList A = graph.getAdjList(v);
				m=OPT[vertexIndex-1][v];
				mTag=BIG_NUMBER;
					for (Edge edge = A.begEdge(); !A.end(); edge = A.nxtEdge())
					{
						int x=OPT[vertexIndex-1][edge.getV()];
						int y=edge.getWeight();
						mTag = Math.min(mTag, (x + y) );
					}
					int min=Math.min(m,mTag);
				OPT[vertexIndex][v]=min;
			  }
				
		}
		
		return true;
		
	}
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

michael,
я сейчас как раз работаю над проэктом, связанным с графом.
У нас есть метод поиска кратчайшего пути, 200 сток, комментарии на немецком, но не должно быть сложно.
Алгоритм ли это "Белман-Форд" - не знаю. Метод работает и разбираться в нём особой надобности у меня не возникало.
Если интересует - напиши в личное сообшение свой емейл, я вышлю этот метод.

В твоём же примере не понятно мне, что из себя представляет переменная graph, какой это тип AdjList, как учитывается вес edge'а.
Если это общеизвестные истины - заранее извиняюсь ..
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

заинтересован frozen_ghost@walla.co.il и благодарен. Вместе с тем если у кого есть белман-форд на яве или знает почему то что я написал не верно то тоже не откажусь от помощи
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

пояснение= Graph объект графикав котором содержатся узлы и ребра .AdjList объект получающий узел и умеющий возврощять все узлы напрямую (одно ребро) связаные с этим узлом. Вес ребра простой int получаемый с помощью метода edge.getWeight();
michael
Сообщения: 116
Зарегистрирован: 15 июл 2004, 13:06
Откуда: ISRAEL (ранее - из Литвы)
Контактная информация:

Получилось !!!! Если кто как я мучился пол-дня шлите мыло и я пришлю вам решение. (Не жадный) frozen_ghost@walla.co.il
Ralfnotdead
Сообщения: 1
Зарегистрирован: 04 май 2006, 22:53

Господа! помогите найти литературу по этому алгоритму. хочется услышать ваших мнений. собсвенно нужно описание этого алгоритма в рамках дискретной математики. с нетерпением жду ваших ответов!

p.s. знаю что в это й книге есть, но не могу ее нигде найти чтобы скачать: Нефедов В.Н., Осипова В.А. Курс дискретной математики
если у кого есть, был бы бесконечно благодарен!! поделитесь счастьем!! ralf19 [dog] rambler [dot] ru
BAHTY3
Сообщения: 106
Зарегистрирован: 30 авг 2005, 02:53
Откуда: Санкт-Петербург
Контактная информация:

У мя есть кучка описаний... Вот только не могу понять: дискретное описание??? ет как??? алгоритм описывается а ты его уже сам реализуешь где и как те нужно...
Жизнь ― это то, что с нами происходит, пока мы строим планы.© Джон Леннон.
BAHTY3
Сообщения: 106
Зарегистрирован: 30 авг 2005, 02:53
Откуда: Санкт-Петербург
Контактная информация:

Пришли мне плз... Интересно посмотреть... bahty3guap@yandex.ru
Жизнь ― это то, что с нами происходит, пока мы строим планы.© Джон Леннон.
Ответить