Создание комбинаций предметов с определенными правилами соединения - PullRequest
0 голосов
/ 10 ноября 2010

Я пытаюсь сгенерировать все возможные комбинации набора объектов с определенными свойствами. Проблема в том, что эти объекты могут быть объединены только определенным образом, и что когда вы «проверяете» комбинацию объектов в целом, она должна удовлетворять определенным условиям.

Данные объекта хранятся в базе данных SQL Server (которую я полностью контролирую, поэтому она может измениться, если данные должны быть расположены по-другому)

Упрощенная версия объектов, с которыми я имею дело:

class Item { 
public string Start {get;set;}
public string End {get;set;}
}

Если у меня есть список этих объектов, например:

  1. Item {Start = "A", End = "B"}
  2. Item {Start = "B", End = "C"}
  3. Item {Start = "B", End = "A"}

Результирующий вывод этого набора элементов будет:

A -> B
B -> C
B -> A
A -> B -> C

, например
Элемент 1 может быть объединен с Элементом 2 для получения A -> B -> C.
Но Элемент 2 не может быть объединен с Элементом 3, потому что Конечное значение Элемента 2 не соответствует Начальному значению Элемента 3.

Также существуют «общие» правила, в которых общая комбинация «Начало» и «Конец» не может привести к перемещению предметов: A -> B -> A
(пункт 1 с пунктом 3).

Возможно объединение до 5 таких предметов.

Есть ли какой-нибудь общий способ сделать это или алгоритм, который достигает того же результата?

Любая помощь (даже указатели) приветствуется.

1 Ответ

0 голосов
/ 10 ноября 2010

Если вы хотите сделать это с запросом в базе данных, вы можете посмотреть Рекурсивные запросы с использованием общих табличных выражений .

...