凸ポリゴンの定式化


7

ポリゴンの形成に使用できる辺の長さのソートされたリストがあります。このような値はあります()。nn1000

次に、これらの値のいずれかを使用して非縮退凸多角形を形成できるかどうかを見つける必要があります。

これにどのように取り組みますか?のオーダーまでは許容されます。できればより良い。どのように進めるか、ここで利用できる凸多角形の特性などについての一般的な考えが必要です。O(n2logn)


これが何のために必要なのか聞いてもいいですか?入力と時間の特定の範囲は興味深いです...いずれにしても、難しい質問のように聞こえます。
jmite 2013年

1
2つの観察:凸性は重要ではありません。:この参照cs.mcgill.ca/~cs507/projects/1998/mas/main2.html 1は、長さのセットからポリゴンを構築することができればそれは簡単ですが、決定するために:mathoverflow.net/questions/96617/...
チャオ徐

これはCodechefのTKCONVEX問題のためですか?これらのコンテストのポイントは、関連するアルゴリズム、または少なくとも関連する文献を自分で見つけることです。(コンピューターサイエンスでは、数学とは異なり、進行中のコンテストに対するポリシーはありません。)
Gilles 'SO- stop be evil'

@Gillesでも、以下のアルゴリズムで1つのWAが得られます。これは問題を正しくするのに十分ではありません。私たちはプログラミングがそれほど上手ではない学部生ですが、学びたいと思っています。コンテストはみんなをやる気にさせます。そして、コンテストごとに10個の新しいアルゴリズムさえ学べば、その利益は莫大です。誰かが私たちを正しい方向に向けている場合(単に指しているだけで、コードがない、何もないことに注意してください)、問題の実際のアルゴリズムを学習する可能性が高くなります。ですから、ただ学ぼうとしています。問題を解決しても、リーダーボードには影響しません。だから、それが私たちが学ぶのに役立つなら、それは問題ではないと思います
アリス

Codechefには、コンテストの終了後に人々がソリューションを投稿するディスカッションフォーラムがあると思います。
Chao Xu

回答:


6

定理1.エッジ長シーケンス持つすべてのポリゴンに対して、同じエッジ長シーケンスを持つ凸形ポリゴンが存在します。a1,,am

証明。 こちら

定義。 はの非負の実数です。それを満たす(厳密) -gon不等式場合全て用。a1,,annn2aj<i=1naij

定理2.シーケンスは、ゴンの不等式を満たす限り、ポリゴンのエッジ長のシーケンスです。a1,,ann

証明。 こちら。(ここでの証明は高度な数学を必要とし、定理1も証明することに注意してください)

問題は次のように減少します。

一連の所定の非負実数、検索要素の部分配列を満たす -gon不等式。nkk

単純なアルゴリズム:がごとの解であるかどうかを確認します。どれも機能しない場合、解決策はありません。ai,,ai+k11ink+1

証明。解場合は、となるような最大の見つけます(つまり、ギャップがあります)。そのようなギャップがない場合は、完了です。ある場合は、もソリューションです。(直感的に、ギャップ内の最大の要素を使用し、最小の要素を削除しました)。このステップを(最大で回)繰り返し、すべてのギャップを埋めることができます。最終的に、一部のについてという形式のソリューションを作成しました。ai1,,aikjaij+1aij>1ai2,,aij,aij+11,aij+1,,aikk1aikk+1,aikk,,aik1,aiki

アルゴリズムは時間で単純に実行できます。多分それを行うためのよりスマートな方法があります。O(kn)

興味深いフォローアップ質問:

一連の所与非負実数、最長のサブシーケンスを見つける、そのようなそのすべてのの要素のサブシーケンス満たす -gon不等式nSkSk


その定理2は、三角形の不等式の拡張ですか?そして、なぜソートが必要なのですか?2番目の定理を満たす任意の点の任意のkサブセットを選択できます。
アリス

ソートする必要はありません。ソートは時間の複雑さを軽減するだけですではなくサブシーケンスのみをチェックしてください。O(n)2n
Chao Xu

動作しないようです。nkポリゴンのみをチェックする必要がありますか?
アリス

これが機能しない場合の例を提供してください。
Chao Xu

3
それを行うには少し良い方法があります。最後のエッジの現在の合計を保持し(この現在の合計にを追加してを引くことにより)、この現在の合計を使用してゴンの不等式を確認します。これにより、時間がから短縮されます。kai+kaikO(kn)O(n)
Peter Shor、2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.