Рассадить людей по алгоритму аудитории - не очень хорошо работает - PullRequest
1 голос
/ 25 декабря 2011

Учитывая следующую проблему:

we have participants and we want to place them in an auditorium, where
each of the participants has a list of  the people that he/she don't
want to sit behind that person , or at the same line of that person .
We do not have any restriction regarding the number of lines in the auditorium ,or the number of seats.

Мне нужно написать алгоритм, где все будут счастливы.

Я думал о топологической сортировке, где мы бросаем задачу в область теории графов: * Выполнить топологическую сортировку на графе G = (V, E). * если есть проблема - верните 'да', в противном случае верните 'нет'. Алгоритм будет работать следующим образом: В каждой строке мы размещаем только одного участника, первая строка содержит первого участника (где он будет первой вершиной в TopSort), вторая строка содержит второго участника и т. Д. Если participant A не хочет сидеть позади (или на той же линии) participant B, то у нас будет направленное ребро от A до B, которое означает, что A сидит позади B.

Моя проблема начинается, когда A не хочет сидеть в одной строке с B (или позади него), а B не хочет сидеть позади A (или в той же строке ).

Буду признателен за помощь, С уважением, Рон

1 Ответ

2 голосов
/ 25 декабря 2011

Очевидно, что если существует круговая зависимость (A хочет сидеть перед B, а B хочет сидеть перед A), то проблема не имеет решения.Топологическая сортировка является адекватным подходом к вашей проблеме.

...