Я начал писать программу C# Silverlight, чтобы попытаться найти решения грубой силы для проблем мужчин с распродажами. Но застрял, пытаясь выяснить все возможные маршруты.Комбинаторика для программистов?
Для моей программы я генерирую случайные точки и пытаясь найти кратчайшую строку, которая может присоединиться к ним, без посещения каких-либо дважды.
так что если у меня есть три точки A, B, & CI хотел бы, чтобы найти все различные комбинации A, B, & C, где каждый используется только один раз, а установка не совпадает с другим набором уже найдено при обратном.
например: ABC ACB BAC
Но как я могу вычислить все комбинации для любого числа точек?
Я писал эту программу для удовольствия, и теперь меня больше интересует поиск хорошего ресурса для изучения того, как решать комбинаторные проблемы в программировании. Все, что я нашел для изучения комбинаторики, подсказывает мне, как найти число возможных комбинаций и бесполезно для фактического перечисления всех возможных комбинаций.
Это перестановка тоже, кстати. Google «получает все перестановки в списке», и вы найдете много результатов. – Ryan
Все еще не нашли ответа на этот вопрос, и я искал в Интернете, в университетской библиотеке и разговаривал с преподавателем математики в своем университете. Я нашел это http://bytes.com/topic/c/answers/536779-richard-heathfields-tsp-permutation-algorithm Это объясняет, как найти все перестановки, но я все еще пытаюсь найти способ получить только перестановки, которые не совпадают при обратном. – user802599