Построение цикла в ТЗ

Тема в разделе "WASM.A&O", создана пользователем Artemy, 22 май 2005.

  1. Artemy

    Artemy New Member

    Публикаций:
    0
    Регистрация:
    18 май 2005
    Сообщения:
    48
    Адрес:
    Russia
    Всем здрасьте.



    Встала задача - реализовать алгоритм решения транспортной задачи методом потенциалов.

    Чисто учебный проект. Типа курсовой :)



    Если есть у кого готовый, приемлемо написанный на С/С++

    под винду - буду счастлив, т.к. смогу немного поспать Ж)

    всякие паскале-подобные наречия интересуют в меньшей степени.



    А вообще вопрос в следующем - как построить цикл(цепь) на этапе поиска элемента матрицы стоимостей для включения в базис. Мне в голову пришло 2 варианта.



    1. пусть каждой клетке с базисным x<sub>ij</sub> в опорном плане соответствует вершина графа. если каждая "базсная" клетка стоит на одной строке (в одном столбце) с другой такой клеткой или начальной клеткой - соответствующие вершины графа связываются ребром.

    поэтапно удаляем висячие вершины и вершины, соответствующие клеткам, стоящим не на "изломах" цикла.

    если на некотором шаге удаляется начальная вершина - пипец, цикла нет. если удалить ничего не удаётся - финиш.



    2. построением дерева (или, что почти то же, рекурсией) произвести поиск пути с поочередной сменой направлений (по строке-по столбцу) из начальной клетки в начальную :)



    Второй способ кажется более мутным, хотя позволяет найти кратчайший цикл. Правда, в ТЗ цикл может быть только один :)

    Какой способ оптимальнее. Может есть и ещё способы? (наверняка есть)

    У Таха (Исследование операций) ни слова про реализацию поиска.



    И еще - как находить потенциалы. Старик Гаусс для столь разреженных матриц с единичными коэффициентами - из пушки по воробьям.

    За соображения заранее спасибо.
     
  2. Artemy

    Artemy New Member

    Публикаций:
    0
    Регистрация:
    18 май 2005
    Сообщения:
    48
    Адрес:
    Russia
    ладно. видать, решать мне все самому.



    построение цикла я сделал. реализовал вариант с рекурсией, но без рекурсии, как таковой. все пройденные базисные клетки в списке сохраняются. фактически - линейно хранимое "уровень за уровнем" дерево. элементы каждого уровня сортируются по величине пройденного пути - чтобы идти всегда кратчайшему возможному.



    если кому интересно - чуть позже могу выслать почтой/асей



    теперь еще вопрос:

    как находить потенциалы? пока не придумал. подскажите, кто знает (см. прошлый пост)