C/C++の宿題を片付けます 62代目
■ このスレッドは過去ログ倉庫に格納されています
0717643
2006/03/18(土) 11:30:05証明できました.以下 n ≧ 6 とします.
補題:任意の偶置換を連続する4要素のリバースで実現できる.
証明:
偶置換は三要素の巡回置換に表せるので,三要素の巡回置換が表せれば十分.そのためには,列 [...,a,b,c,...] を [...,b,c,a,...] に移せればいい(ただし左右の ... は動かさない).
この置換は,右側に3つ以上スペースがある場合は8手でできる.右側に2つ以上,左側に1つ以上のスペースがある場合は9手でできる(手順省略).
長さを 6 以上に制限しているので,かならずこのどちらかの条件か,左右を入れ替えた条件が成立するのですべて実現できた.//
定理:n が偶数の場合はすべて解け,奇数の場合は半分解けない.
n が偶数のときは列全体の巡回置換が奇置換になるので,4要素の入れ替えと全体の巡回置換を合わせてすべての置換を生成する.n が奇数のときは偶置換になるので,奇置換のものは生成できない.//
■ このスレッドは過去ログ倉庫に格納されています