﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / Visual Basic  / волновой метод, кратчайшее расстояние / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Mon, 13 Oct 2008 20:16:09 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: волновой метод, кратчайшее расстояние</title><link>http://relib.com/forums/Topic914454-1-1.aspx</link><description>я всегда решал подобные задачи рекурсивно (если нет доп требований - наприм - производительность)</description><pubDate>Mon, 09 Jul 2007 16:31:04 GMT</pubDate><dc:creator>Vsh</dc:creator></item><item><title>RE: волновой метод, кратчайшее расстояние</title><link>http://relib.com/forums/Topic914454-1-1.aspx</link><description>&lt;DIV&gt;есть ошибка....в обратном ходе нужно еще goto на конец циклов вешать, иначе путь "распушается" и получается фигня...&lt;/DIV&gt;&lt;DIV&gt;и еще нужно там же в обратном ставить "&amp;lt;=" вместо "&amp;lt;", а то тож косяк...&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;P.s. удивляюсь как я раньше в школе/ВУЗе любил математику....дискретка жесть как вспоминается...еще чуть чуть и убьюсь апстенку...&lt;/DIV&gt;</description><pubDate>Sun, 01 Jul 2007 22:13:44 GMT</pubDate><dc:creator>corvus</dc:creator></item><item><title>RE: волновой метод, кратчайшее расстояние</title><link>http://relib.com/forums/Topic914454-1-1.aspx</link><description>&lt;DIV&gt;можно по идее сделать еще цикл n = 1 to 13 и впихнуть кучу if, равное количеству доступных к проходу клеток, а их 29 штук:&lt;/DIV&gt;&lt;DIV&gt;if A(n) = 1 and B(n) = 1 then&lt;/DIV&gt;&lt;DIV&gt;h=p(10)&lt;/DIV&gt;&lt;DIV&gt;else if A(n) = 2 and B(n) = 1 then&lt;/DIV&gt;&lt;DIV&gt;h=p(20)&lt;/DIV&gt;&lt;DIV&gt;... и т.д.....&lt;/DIV&gt;&lt;DIV&gt;next n&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;но мож можно как покороче...ибо чет писанины уж очень....&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;P.s. в проге-клиенте уже совсем мало остается букв под переменные...)))))))))&lt;/DIV&gt;&lt;DIV&gt;P.s.s. диалог сам с собой, но если у кого есть идеи как укоротить или ченить обсудить - буду очень рад...&lt;/DIV&gt;</description><pubDate>Sun, 01 Jul 2007 18:59:54 GMT</pubDate><dc:creator>corvus</dc:creator></item><item><title>RE: волновой метод, кратчайшее расстояние</title><link>http://relib.com/forums/Topic914454-1-1.aspx</link><description>&lt;DIV&gt;попробую объяснить проще...&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;&lt;IMG src="http://www.relib.com/forums/Uploads/Images/818b20eb-c69d-40c3-9974-3514.jpg"&gt;&lt;/DIV&gt;&lt;DIV&gt;или в нормальном виде - &lt;A href="http://2983.ru/road2.jpg"&gt;http://2983.ru/road2.jpg&lt;/A&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;т.е. к каждой координате привязана должна быть определенная функция и программа потом следуя по массивам A и B должна выполнить функцию соответствующую координатам M( A(1),B(1) ), далее M( A(2),B(2) ), и т.д. до 13-ой...&lt;/DIV&gt;</description><pubDate>Sun, 01 Jul 2007 18:54:01 GMT</pubDate><dc:creator>corvus</dc:creator></item><item><title>RE: волновой метод, кратчайшее расстояние</title><link>http://relib.com/forums/Topic914454-1-1.aspx</link><description>&lt;DIV&gt;есть идея дальше пойти вот так:&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;'очистка массивов с координатами проходов &lt;/DIV&gt;&lt;DIV&gt;for n=1 to 13 step 1 ' n - максимально возможное кол-во переходов + 1 на всяк случай&lt;BR&gt;A(n)=0&lt;BR&gt;B(n)=0&lt;BR&gt;next n&lt;/DIV&gt;&lt;DIV&gt;' цикл поиска пути&lt;/DIV&gt;&lt;DIV&gt;f = 13 ' случайное число для точки отсчета&lt;/DIV&gt;&lt;DIV&gt;M(2,5) = 13 'присвоил чтоб найти начало&lt;BR&gt;for n = 1 to 13 step 1&lt;BR&gt;for i = 2 to 11 step 1&lt;BR&gt;for j = 2 to 7 step 1&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;if M(i+1,j) = 0 then ' проверяем не это ли конечная точка&lt;BR&gt;goto 100 'как подругому выйти не знаю&lt;BR&gt;end if&lt;BR&gt;' такие циклы для всех M(i+1,j), M(i,j+1), M(i-1,j), M(i,j-1)&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;if M(i,j) = f and M(i+1,j) &amp;lt; M(i-1,j) and M(i+1,) &amp;lt; M(i,j+1) and M(i+1,j) &amp;lt; M(i,j-1) and M(i+1,j) &amp;gt; -5  then ' ищем самую маленькую координату вокруг, но чтоб была больше -5&lt;BR&gt;A(n) = i+1&lt;BR&gt;B(n) = j&lt;BR&gt;M(i+1,j)=f+1 ' присваиваем значение на единицу больше&lt;BR&gt;end if&lt;BR&gt;' такие циклы для всех M(i+1,j), M(i,j+1), M(i-1,j), M(i,j-1)&lt;BR&gt;next j&lt;BR&gt;next i&lt;BR&gt;f = f + 1 ' увеличиваем для следующего прохода...&lt;BR&gt;next n&lt;BR&gt;100 далее...&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;В результате получаем по идее массивы A(n) и B(n) с последовательностью координат точек прохода...терь вопрос просто по незнанию...как заставить выполняться команды в соответсвии с путем, т.е. например:&lt;/DIV&gt;&lt;DIV&gt;есть A(1)=3 и B(1)=5 это координата пути первого шага, нужно чтобы к этой точке была привязана функция (post запрос в инет)...&lt;/DIV&gt;&lt;DIV&gt;далее A(2)=4 и B(2)=5 следующая функция....&lt;/DIV&gt;</description><pubDate>Sun, 01 Jul 2007 18:34:24 GMT</pubDate><dc:creator>corvus</dc:creator></item><item><title>волновой метод, кратчайшее расстояние</title><link>http://relib.com/forums/Topic914454-1-1.aspx</link><description>&lt;DIV&gt;ниже рисунком привожу карту, нормальный вид карты можно увидеть по адресу &lt;A href="http://2983.ru/road.jpg"&gt;http://2983.ru/road.jpg&lt;/A&gt; , на карте два варианта конечной точки (верхняя и нижняя)&lt;/DIV&gt;&lt;DIV&gt;где красное поле - непроходимая область,&lt;/DIV&gt;&lt;DIV&gt;желтое - проходимое&lt;/DIV&gt;&lt;DIV&gt;синее - конечная точка 'переменная&lt;/DIV&gt;&lt;DIV&gt;розовое - начальная 'переменная&lt;/DIV&gt;&lt;DIV&gt;цифрой "-5" - объявляю непроходимые поля, "-4" - поля где дорога равна нулю, "-2" нормальная дорога со стандартной длиной, "0" - конечная точка&lt;/DIV&gt;&lt;DIV&gt;&lt;IMG src="http://www.relib.com/forums/Uploads/Images/8ce4d08e-1fe8-4e70-8523-f6a6.jpg"&gt;&lt;/DIV&gt;&lt;DIV&gt;первой группой циклов я заполняю массив M(i,j) или M(12,8) количеством переходов, причем расстояния с "нулевым" переходом не увеличивают путь...&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Теперь требуется обратным методом дойти до конца... &lt;/DIV&gt;&lt;DIV&gt;мои идеи: если M(2,5)=M(3,5)-1 тогда записываем в например пустые массивы A(n) и B(n) значения 3 и 5 соответственно на n=1, где n-максимально возможное количество переходов, только как все это сунуть в массив... учитывая что например начальному полю соответствует так же еще одна ячейка с таким же значением...&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;P.s. косяк так же если конечная(начальная) точка находится рядом с нулевым путем...&lt;/DIV&gt;&lt;A href="http://2983.ru/road.jpg"&gt;&lt;/A&gt;</description><pubDate>Sun, 01 Jul 2007 13:54:10 GMT</pubDate><dc:creator>corvus</dc:creator></item></channel></rss>