Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Vitaly Lugovsky                      2:5080/1003    17 Jan 2003  21:24:04
 To : Oleg I. Khovayko
 Subject : Re: коммивояжёр
 -------------------------------------------------------------------------------- 
 
 Oleg I. Khovayko <olegh@ncbi.nlm.nih.gov> wrote:
 
 >> считать за труд. Сам же алгоритм простенький, намного короче его и не
 >> записать:
 > 
 > Итак, Вы признали, что применение рекурсии не дает пользы
 > дла решения первого примера. И даже написали свое решение,
 > которое точь-в-точь воспроизводит приведенный мною алгоритм на ML-e.
 
  Конечно же. Hо он - рекурсивный, без итерации. И если всё же получится
 сформулировать спецификацию задачи - то для доказательства алгоритма
 придётся мою реализацию взять, а не итеративную - иначе доказательство
 превратится в настоящий кошмар.
 
 > Хочу отметить еще такой момент: Сначала я дал описание
 > задачи (что бы подумать), а потом с задержкой привел решение.
 > Судя по Вашей реакции, вначале Вы не поверили, что матричный
 > алгоритм и есть решение задачи, и требовали от меня доказательств
 > адекватности приведенного алгоритма поставлений задаче.
 
  Hет. Доказательство мне нужно, чтоб показать, насколько оно неэлементарно
 для итерации, тогда как аналогичная рекурсия приводит к достаточно простым
 выводам.
 
 > Отсюда вывод: Ваши рекурсивные изыскания в области
 > разработки алгоритма явно лежали в стороне от правильного
 > решения. Следовательно, знание рекурсии во всех ее проявлениях
 > не сильно помогло Вам самому разработать правильный алгоритм
 > для решения этой задачи.
 
  Правильный алгоритм был известен изначально. Речь шла о формально анализе
 этого алгоритма, и о той форме, в которой он должен быть записан для
 облегчения этого анализа.
 
 > И где-то сутки Вам потребовались,
 > чтобы убедиться в адекватности приведенного мною матричного 
 > алгоритма поставленой задаче.
 
  Hет. Я вообще дальше формулировки не продвинулся - не смог спецификацию
 написать, дабы было, что доказывать.
 
 > Hапоминаю: на topcoder-e люди, не зацикленые исключительно
 > на рекурсии, такой алгоритм разрабатывают и кодируют примерно 
 > за 40 минут.
 
  Меня не интересует, сколько там времени на разработку и кодирование уходит.
 Мне важен результат - СТРОГОЕ доказательство того факта, что данная
 формулировка данного алгоритма в точности соответствует данной постановке
 задачи и является её решением при заданных условиях.
 
 > То есть человек получил описание задачи 
 > (не способа ее решения, а именно описание задачи) - и через 
 > 40 минут засабмитил безглючный код, решающий эту задачу.
 
  Что значит "безглючный"? "Работает, и хрен с ним"? Или всё же безглючность
 формально обоснована?
 
 > int NumWays(int I, int J, int K, vector< vector<int> > matrix) {
 >   vector<int> V(N);
 >   V[I] = 1;
 >   while(K--)
 >     V *= matrix; // тут векторное произведение вектора на матрицу
 >   return V[J];
 > }
 > 
 > Ваше итерационное решение:
 
  Оно HЕ итерационное.
 
  Потому как dowhile есть функция:
 
 let rec dowhile f k x =
    if k > 0 then dowhile f (k-1) (f x)
    else x
 
  И из этой формулировки уже моментально выводятся констрейны для k,
 ограничения на вид функции f и на параметр x. Как это в итерации сделать,
 устраивая разборки с промежуточными переменными - я представляю, конечно же,
 но ни за что не возьмусь за подобное доказательство.
 
 > Мое итерационное решение:
 > 
 > queue<Node*> q;
 > 
 > q.put(&root);
 > 
 > while(!q.empty()) {
 >  Node *cur = q.get();
 >  do_something(cur); // Processing current node
 >  q.put(cur->left); q.put(cur->right);
 > }
 > 
 > 
 > Ваше рекурсивное решение:
 > 
 > let rec tfindl f nl =
 >   let rec nxtlyr = function
 >     hd :: tl ->
 >      (match hd with
 >        Tnode(v,l,r) -> if f v than raise (Found(v)) else
 >          l::r::(nxtlyr tl) | Tnone -> nxtlyr tl
 >       )
 >    | [] -> []
 >   in tfindl f (nxtlyr nl)
 > 
 > 
 > --------
 > 
 > Теперь пусть обшество сравнит приведенные примеры,
 > и выскажет свое мнение в пользу читабельности, понятности,
 > компактности, эффективности и возможности анализа того или 
 > иного алгоритма и приведенной в примерах его реализации.
 
  Hа тему компактности - не честно. Функции всё же разные.
  Потому как
 1) проверка наличия ветки дерева у меня в do_something не запрятана, а
  явно прописана
 2) do_something - нечто грязное, с сайд-эффектами, а у меня f - функция,
 возвращающая true, если искомый элемент найден, после чего исполнение
 завершается.
 
  Для сравнения компактности прошу привести итеративный вариант к тому же
 поведению.
 
 --- ifmail v.2.15dev5
  * Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: коммивояжёр   Vladimir Vassilevsky   12 Jan 2003 19:07:19 
 Re: коммивояжёр   Vitaly Lugovsky   12 Jan 2003 22:24:50 
 Re: коммивояжёр   Oleg Khovayko   12 Jan 2003 23:29:19 
 Re: коммивояжёр   Vitaly Lugovsky   14 Jan 2003 18:51:52 
 Re: коммивояжёр   Oleg I. Khovayko   14 Jan 2003 18:56:13 
 Re: коммивояжёр   Vitaly Lugovsky   15 Jan 2003 00:14:22 
 Re: коммивояжёp   Alexei Philippov   15 Jan 2003 04:55:49 
 Re: коммивояжёp   Vitaly Lugovsky   15 Jan 2003 19:29:41 
 Re: коммивояжёp   Alexander Krotov   18 Jan 2003 19:05:37 
 Re: коммивояжёр   Oleg Khovayko   15 Jan 2003 05:55:46 
 Re: коммивояжёр   Vitaly Lugovsky   15 Jan 2003 19:36:10 
 Re: коммивояжёр   Vitaly Lugovsky   16 Jan 2003 19:01:25 
 Re: коммивояжёр   Vitaly Lugovsky   16 Jan 2003 19:26:36 
 Re: коммивояжёр   Oleg I. Khovayko   17 Jan 2003 18:48:11 
 Re: коммивояжёр   Vitaly Lugovsky   17 Jan 2003 21:24:04 
 Re: коммивояжёр   Andrew Ezhguroff   15 Jan 2003 02:50:35 
 коммивояжёр   Alex Cvetkov   17 Jan 2003 01:44:23 
 Re: коммивояжёр   Vitaly Lugovsky   17 Jan 2003 15:36:28 
 коммивояжёр   Alexey Krasnov   13 Jan 2003 21:40:48 
 Re: коммивояжёр   Vitaly Lugovsky   14 Jan 2003 18:53:06 
 Re[2]: коммивояжёр   Alexey Krasnov   14 Jan 2003 18:54:10 
 Re: коммивояжёр   Vitaly Lugovsky   15 Jan 2003 00:15:28 
 коммивояжёр   Andrew Aksyonoff   15 Jan 2003 06:14:53 
 Re: коммивояжёр   Vitaly Lugovsky   16 Jan 2003 18:48:29 
 Re: коммивояжёр   Nick Kovaliov   17 Jan 2003 10:50:39 
 Re: коммивояжёр   Vitaly Lugovsky   17 Jan 2003 15:38:45 
 Re: коммивояжёр   Alexander Krotov   17 Jan 2003 17:05:22 
 коммивояжёр   Andrew Aksyonoff   17 Jan 2003 19:56:44 
 Re: коммивояжёр   Vitaly Lugovsky   18 Jan 2003 18:11:29 
 коммивояжёр   Roman Rogozin   14 Jan 2003 02:05:05 
 Re: коммивояжёр   Vitaly Lugovsky   14 Jan 2003 18:53:56 
 коммивояжёр   Dmitry Samoylov   14 Jan 2003 00:45:22 
Архивное /ru.algorithms/146467c3e038.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional