![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.11.2013
Сообщений: 60
|
![]()
Нужна помощь для написания алгоритма Беллмана-Шимбела.(именно этот)
(графы, вычисления кратчайшего пути) Пример, есть матрица C1: 0 1 0 2 2 1 0 1 0 1 0 1 0 2 3 2 0 2 0 1 2 1 3 1 0 По ней нужно сделать матрицу C2: 0 1 2 2 2 1 0 1 2 1 2 1 0 2 2 2 2 2 0 1 2 1 2 1 0 Теперь например для вычисления елемента С13 матрицы С2: С13=min(C11+C13;C12+C23;C13+C33;C14+C4 3;C15+C53)=(0;2;0;4;5)=2 и т.д. (тоесть произведение строки на столбец и поиск миниму) И так дале ищем С4 С8 ... Cn пока последняя матрица не совпадает с предыдущей. Ну так вот я сделал таблицу StringGrid внес туда первоначальные даные, выставил вторую таблицу StringGrid, дале... Наверное каждый елемент матрицы С2 нужно будет пересчитывать за формулой. Например, чтоб вычеслить C13 нужно: Взять первую строку (StringGrid1.Rows[1]) положыть в масив, взять стобец (StringGrid1.Cols[3]) в масив, потом масивы додать, и найти минимальное значение но значения > 0 . Или можна сразу найти произведение с таблицы и найти минимум больше 0, не занося в масив? Возможно я все утруждаю себе. Нужен совет как все сделать болия мения компактно. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
![]()
StringGrid - это и есть массив. Двумерный массив строк. Работайте прямо с ним. Когда нужны будут вычисления, используйте StrToInt (строка в число), после вычислений - IntToStr (число в строку). А минимум можно и так искать, не преобразовывая строки в числа.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 09.11.2013
Сообщений: 60
|
![]()
Тогда наведите пожалуйста пример как найти минимум C13.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
![]()
Если я правильно понял алгоритм.
Пояснения в тексте Код:
Последний раз редактировалось ZX Spectrum-128; 16.11.2013 в 12:35. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 09.11.2013
Сообщений: 60
|
![]()
Спасибо. Буду проверять.
|
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 09.11.2013
Сообщений: 60
|
![]() Цитата:
0 1 0 2 2 1 0 1 0 1 0 1 0 2 3 2 0 2 0 1 2 1 3 1 0 Тоесть нужно найти только суму етих елементов и их минимум и записать в матрицу С2, и семетрически записать их в столбцы. Последний раз редактировалось ogamilait; 19.11.2013 в 00:51. |
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
![]()
Нужно добавить условие if i>j then, если выше главной диагонали. А что такое семетрически?
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 09.11.2013
Сообщений: 60
|
![]()
"симметрично" - плохо с языком.
|
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
![]()
Нет-нет. Я понял, что симметрично. Я не понял, что означает симметрично записать в столбец.
Алгоритм заключается в том, что нужно провести для элементов, лежащих выше главной диагонали, сложение элементов строки с соответствующим столбцом, далее найти минимум и записать. А что означает симметрично? |
![]() |
![]() |
![]() |
#10 | |
Пользователь
Регистрация: 09.11.2013
Сообщений: 60
|
![]() Цитата:
0 1 0 2 2 1 0 1 0 1 0 1 0 2 3 2 0 2 0 1 2 1 3 1 0 выделил цветами. Ну это так второстипенное дело. Меня больше алгоритм интирисует который ты дал он как то не так щитает как нужно. Вот приме маленький: С1 0 1 2 1 0 9 2 9 0 находим C2: C12=min(C11+C12;C12+C22;C13+C23)=min(0 +1;1+0;2+9)=1 и т.д. выйдет такая матрица: 0 1 2 1 0 2 2 2 0 А в если запустить в алгоритм матрицу эту выйдет 0 2 2 0 0 2 0 0 0 Ну три 0 что ниже глав. диагонали ето через if j>i... но там не все 2 должны быть сверху. Вроде как то так. Я не силен пробывал сам с 0, но как то не оч получаетса. Код:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нахождение кратчайшего пути на графе. | Мария74 | Помощь студентам | 14 | 31.10.2012 21:36 |
Нахождение кратчайшего пути | Grime | Microsoft Office Excel | 6 | 06.06.2012 08:46 |
Нахождение кратчайшего пути в графе | Nata220 | Помощь студентам | 4 | 29.11.2010 14:54 |
поиск кратчайшего пути | LENA_M | Общие вопросы C/C++ | 0 | 29.05.2010 22:15 |
Алгоритм Беллмана-форда,нахождение кратчайшего пути | bakir | Помощь студентам | 1 | 13.01.2010 02:31 |