Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 4

Коммивояжер (бродячий торговец)

10.10.2009, 21:53. Показов 6058. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите с реализацией задачи о коммивояжере, желательно простое решение полным перебором: потому как, входные данные будут больше не больше 10 городов, а 9! - вполне решабильно.
У меня есть некоторые наработки, но сроки поджимать начинают, поэтому прошу помощи....

Зарание спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2009, 21:53
Ответы с готовыми решениями:

коммивояжер
не могу найти подходящую приложению для коммивояжер!

Коммивояжер
Доброго времени суток! Для полного графа и n <= 20 нужно написать программу для задачи коммивояжера за приемлемое время Какой алгоритм...

Коммивояжер. Расчёт минимального пути
нужно переделать функцию которая считает минимальный путь с помощью метода ветвей и границ, на функцию полного перебора public void...

8
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
11.10.2009, 10:26
Хорошая и основательная задачка.
Показывай, что есть, поможем.
Готовый код был в интернете, но за него просили деньги (где-то натыкался).
Я реализовывал подобное, но там были условия по жёстче и ограничение на время, полный перебор не катил (шибко долго).
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
11.10.2009, 11:54
Цитата Сообщение от Decoyfromptz Посмотреть сообщение
Ребят, помогите с реализацией задачи о коммивояжере,
а! это та задача, где коммивояжер играет в тэтрис и нужно угадать, что у него в кармане?
0
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 4
11.10.2009, 12:39  [ТС]
Цитата Сообщение от zim22 Посмотреть сообщение
а! это та задача, где коммивояжер играет в тэтрис и нужно угадать, что у него в кармане?
Нет, это задача о бродячем торговце, которому нужно обходить города, так чтобы сумарная длинна его пути была наименьшей.
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
11.10.2009, 13:22
так или иначе в чём ваши затруднения?
0
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 4
11.10.2009, 14:08  [ТС]
к примеру я генерирую все перестановки чисел.
Не могу организовать обход матриц стоимости, по каждой из последовательности.

P.S. Все в памяти не храню, все перестановки сохраняю в файле чтобы не держать в ram.

Добавлено через 27 секунд
P.P.S с алгоритмами у меня плоховато)))
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
11.10.2009, 15:23
алгоритм посвоей сути прост:
1.если есть больше одного варианта перемещения, выбрать один, а остальные сохранить (в вашем случае в фаил).
2. когда в итоге упрётесь в конец пути, сравнить результат с имеющимся (для вас длина пути)
3. взять следующий вариатн из сохранённых
4. выполнять пока не исчерпаются все варианты
5. вывести правильный результат.

P.S. для вашего случая лучше с файлом не заморачиваться, рам у вас хватит с лихвой и проблем меньше. Иначе придётся каждый раз с файлом работать, когда добавить/удалить случай потребуется, в рам это, имхо, проще
P.S.S. Какой язык? С? С++?
0
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 4
11.10.2009, 20:03  [ТС]
Почти закончил... По поводу экономии места в ram, просто это уже чисто мое, не люблю всякие вспомогательные данные в ней держать, да не смотря что ее 4 Гб)
Работать с файлом мне почему-то показалось проще, потому как за основу взял этот кусок

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std; 
void placement(int citems,int iter,int const cboxes,char* output)
{
        if(iter==citems)
                cout<<output<<'\n';
        else
                for(int i=0;i<cboxes;i++)
                {
                        if(output[i]!='0')
                                continue;
                        output[i]=49+iter;
                        placement(citems,iter+1,cboxes,output);
                        output[i]='0';
                }
}
 
int main()
{
        int n,m;
        cout<<"input count of items:";
        cin>>n;
        cout<<"\ninput count of boxes:";
        cin>>m;
        if(n>m)
        cout<<"No solutions";
        else
        {
                char* output=new char[m+1];
                for(int i=0;i<m;i++)
                        output[i]='0';
                output[m]=0;
                placement(n,0,m,output);
        }
        cout<<'\n';
        return 0;
}
Язык... Мммм, иногда на С, иногда C++... Мне без разницы, смотря что писать...
0
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
11.10.2009, 20:06
Цитата Сообщение от Decoyfromptz Посмотреть сообщение
Почти закончил...
Язык... Мммм, иногда на С, иногда C++... Мне без разницы, смотря что писать...
имхо, подобное на С++ удобнее. со стандартными контейнерами особенно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2009, 20:06
Помогаю со студенческими работами здесь

Коммивояжёр, метод поиска в глубину
Всем привет. Собственно, тема говорит сама за себя. И ведь задачка-то не самая сложная, но что-то как-то грустно у меня с ней. Нашёл...

Коммивояжёр - или оптимизация пути.
Задача заключается в том, чтобы оптимизировать пути движения транспорта от подбора клиента до его высадки. Распределение заказов по...

Коммивояжер (полный перебор), и сколько стоит?
Здравствуйте, подскажите работающую программу для решения задачи коммивояжера методом полного перебора Цитата: поиск самого...

Определить, сможет ли коммивояжер обойти все клетки и вернутся в исходную клетку
Имеется клеточное поле размером N*M. Из каждой клетки можно перемещатся в одну из соседних, если она есть ( вверх, вправо, вниз, влево)....

Определить маршрут, которым должен двигаться коммивояжер так, чтобы заключить максимально возможное число контрактов
Множество городов, обслуживаемых фирмой X представлено графом, вершины которого соответствуют городам, а ребра – соединяющим их маршрутам,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru