2011-12-25 4 views
1

次のような問題を考える:講堂アルゴリズムの人々シーティング - 動作しませんので、良い

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)でトポロジカルソートを実行します。 *問題のソートがある場合は「はい」を返し、そうでない場合は「いいえ」を返します。 アルゴリズムは次のように動作します。 各行に1人の参加者が配置されます。最初の行は最初の参加者(TopSortの最初の頂点)を保持し、2番目の行は2番目の参加者などを保持します。 If participant Aは、背後に(または同じ行に)座ったくない場合は、participant Bを指定すると、AからBへの有向枝があり、Aは後ろにBと表示されます。 AB(または彼の後ろ)と同一線上に座って、そしてBA(または同じラインで)後ろに座るしたくないしたくないとき

私の問題が開始されます。循環依存関係は、(AB前に座るしたい、とBA前に座るしたい)がある場合、私はあなたが、助け よろしく感謝

、ロン

明らか

答えて

2

は、問題は何も解決していません。トポロジカルなソートは、あなたの問題に対する適切なアプローチのようです。

+0

あなたは、AがBと同じ行に座りたくないとき(そしてBの後ろに)BがAの後ろに座ることを望んでいないとき(または同じ行に) ? – ron

+0

@ron:問題は明らかに解決策がないので、実際にはNOを返します。 – Vlad

+0

返り値NOサイクルがあれば、長さ2でなく、BがAの後ろに座りたい、CがBの後ろに座りたい、AがCの後ろに座りたい、というサイクルもある。 – amit

関連する問題