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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Oleg I. Khovayko                     2:5020/400     17 Jan 2003  18:48:11
 To : Vitaly Lugovsky
 Subject : Re: коммивояжёр
 -------------------------------------------------------------------------------- 
 
 > считать за труд. Сам же алгоритм простенький, намного короче его и не
 > записать:
 
 Итак, Вы признали, что применение рекурсии не дает пользы
 дла решения первого примера. И даже написали свое решение,
 которое точь-в-точь воспроизводит приведенный мною алгоритм на ML-e.
 
 Хочу отметить еще такой момент: Сначала я дал описание
 задачи (что бы подумать), а потом с задержкой привел решение.
 Судя по Вашей реакции, вначале Вы не поверили, что матричный
 алгоритм и есть решение задачи, и требовали от меня доказательств
 адекватности приведенного алгоритма поставлений задаче.
 
 Отсюда вывод: Ваши рекурсивные изыскания в области
 разработки алгоритма явно лежали в стороне от правильного
 решения. Следовательно, знание рекурсии во всех ее проявлениях
 не сильно помогло Вам самому разработать правильный алгоритм
 для решения этой задачи. И где-то сутки Вам потребовались,
 чтобы убедиться в адекватности приведенного мною матричного 
 алгоритма поставленой задаче.
 
 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];
 }
 
 Ваше итерационное решение:
 
  let numways n i j k m =
    let v0 = Array.make n 0 in v0.(i) <- 1;
    let v = dowhile (fun x -> vm_mul x m) k v0 in
    v.(j)
 **** Второй пример:
 
 Мое итерационное решение:
 
 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ад вами потешаться будут".
 -- 
 #include <best/regards.hpp>
 Oleg I. KHOVAYKO  
 (301)435-5885 || WEB: http://olegh.spedia.net
 --- ifmail v.2.15dev5
  * Origin: National Center for Biotechnology Information (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 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/115223a9c2cc0.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional