タグ付けされた質問 「algorithms」

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズムの設計と分析に関連している場合に使用します。

1
一貫性は、ヒューリスティックも許容されることをどのように示唆していますか?
ヒューリスティック関数h(n)h(n)h (n)は... ノードnnnからゴールまでの推定コストが、そのサクセサステップコストにn′n′n'サクセサからゴールまでの推定コストを加えた値より大きくない場合、一貫性があります。 h(n)h(n)h(n)が目標状態への真のコストを過大評価しない場合に許容されます。 私の人工知能コースの教科書には、一貫性は許容性よりも強いと書かれていますが、それを証明するものではなく、数学的な説明をするのに苦労しています。

2
スケジューリング問題のこの特殊なケースは線形時間で解決できますか?
学生のアリスは、今後数週間にわたって多くの宿題をします。宿題の各項目には、ちょうど1日かかります。また、各アイテムには期限があり、期限に間に合わなかった場合、成績にマイナスの影響があります(実数、比較可能性のみを想定した場合のボーナスポイント)。 (期限、成績への影響)のリストを指定して、成績への悪影響の合計を最小化する、その日のうちに宿題を行うスケジュールを計算する関数を作成します。 すべての宿題は最終的に行われなければなりませんが、彼女がアイテムの締め切りに間に合わなかった場合、彼女がそれを遅らせることは重要ではありません。 別の定式化では: ACME corpは、顧客に水を供給したいと考えています。彼らはすべて1つの上り坂に沿って住んでいます。ACMEには、通り沿いにいくつかの井戸があります。各井戸には、1人の顧客に十分な水が供給されます。顧客は、提供する金額を変えて入札します。水は下り坂でしか流れません。提供する顧客を選択して、収益を最大化します。 バケットの並べ替えを使用して期限を並べ替えることができます(または、既に期限で並べ替え済みであると仮定します)。 グレードの影響を降順に並べ替えれば、貪欲なアルゴリズムで問題を簡単に解決できます。その解決策はO(n log n)に勝るものはありません。 Median of Mediansとランダム化線形最小スパニングツリーアルゴリズムに触発され、単純なスケジューリング/フローの問題を(ランダム化?)線形時間でも解決できると思います。 を探しています: (潜在的にランダム化された)線形時間アルゴリズム または、線形時間は不可能であるという議論 踏み台として: 期限までにどの項目を実行できるかを知るだけで、完全なスケジュールを線形時間で再構築するのに十分であることをすでに証明しました。(この洞察は、証明書についてのみ質問している2番目の定式化の根底にあります。) 単純な(積分!)線形プログラムでこの問題をモデル化できます。 このプログラムの双対性を使用すると、双対プログラムの解も与えられている場合、候補の提案された解の最適性を線形時間で確認できます。(両方の解は線形のビット数で表すことができます。) 理想的には、グレードの影響の比較のみを使用し、そこでの数値を想定しないモデルでこの問題を解決したいと考えています。 この問題には2つのアプローチがあります。1つは期限とインパクトを使用したトレープに基づいており、もう1つはランダムピボット要素の選択とインパクトによるアイテムの分割に基づいています。どちらもO(n log n)を強制する最悪の場合、またはパフォーマンスを低下させますが、両方のパフォーマンスを低下させる単純な特殊なケースを作成することはできませんでした。


1
一意の要素を持つリストの距離を編集
リスト間のレーベンシュタイン距離編集距離はよく研究された問題です。しかし、各リストで要素が複数回出現しないことがわかっている場合、可能な改善についてはあまり見つけることができません 。 また、要素が比較可能/ソート可能であると仮定します(ただし、比較するリストは最初からソートされていません)。 O(min(m,n)s)O(min(m,n)s)O(\min(m,n)s)O(min(s,m,n)s)O(min(s,m,n)s)O(\min(s,m,n)s)sss より正式には、 与えられた2つの文字列間の編集距離は 文字が繰り返されないという約束で、どの程度効率的に計算でき ますか?s,t∈Σ∗s,t∈Σ∗s,t \in \Sigma^* ΣΣ\Sigmaは非常に大きなアルファベットです。


9
アルゴリズムとは正確には何ですか?
私はこれが箱から出して少し聞こえるかもしれないことを知っています、実際、私はいつも箱の中を考えていましたが、最近、コンピューター科学が高い自由度を提供するため、大学で教えられたもの。 階乗関数を考えます。通常、この関数は次のように定義します int fact(int n) { int r = 1; for(int i=2;i<=n;i++) r = r*i; return r; } これをアルゴリズムと呼び、これが正しい方法であることは間違いありません。次に、「これを一定時間で行うことができますか?」と思いましたが、これは次のアイデアを可能にします:array [n]がnの階乗を格納する整数の配列があったらどうなりますか?この配列がいっぱいになると、次のようにファクトを単純に定義できます。 int fact(int n) { return array[n]; } それでも、正しい結果を提供し、一定の時間O(1)で動作するにもかかわらず、このアルゴリズムを調整することはできません。これをアルゴリズムと呼べますか?そうでなければ、なぜですか?配列を埋めるために脳内にある場合でも、配列を埋めるにはある時点でアルゴリズムが動作する必要があると主張できますが、これが基準になるのでしょうか?これらの側面は正式にどのように扱われますか? この概念は、引数の数に関係なく整数で動作する任意の関数に拡張できることに注意してください。関数に2つの引数がある場合は行列を使用する必要があり、関数に3つの引数がある場合は3を使用する必要があります。また、これらのソリューションは単にメモリ消費のために使用されていませんか? また、プログラムが提供する可能性のあるすべての出力をインデックス化する方法を見つけることができるため、その機能が出力を持つプログラムを包含することもありません。 別の例として、配列の一般的な使用法を考えてみましょう。最初にサイズNの配列を割り当て、次にインデックスnに値を格納し、nを1単位増やして配列に要素を追加します。次に、要素を探したい場合は、配列に対して線形検索を実行するしかありません。代わりに、ゼロで初期化された整数を格納するためのサイズの配列、たとえばInteger.MAXVALUEを作成した場合、そのインデックスに1を置くことで整数を格納できます。次に、O(1)時間で配列内にその存在を検索できます。同じ番号の複数のユニットを配置できるようにしたい場合はどうすればよいですか?問題ありません。整数のインデックスに格納されている値を増やすだけです。 ソートはもう少し複雑になりますが、それでもルックアップと追加はO(1)時間で実行できます。
12 algorithms 

3
マルチコアSATソルバー
私は25k節5k変数SAT問題を解決しようとしています。1時間(precosat)実行されていて、後でより大きなものを解決したいので、マルチコアSAT-Solverを探しています。 SAT-Solversが多いように思えるので、私はかなり迷っています。 誰かが私の場合に最適なものを指摘してもらえますか? また、誰かがおおよその時間を教えてくれれば幸いです(可能であれば)。

2
ツリーの線形時間ラベル付けアルゴリズム?
頂点にラベルを付けたい無向ツリーがあります。リーフノードには1つのラベルを付ける必要があります。次に、葉が取り除かれたと仮定します。残っているツリーでは、葉に2つのラベルを付ける必要があります。このプロセスは、すべての頂点にラベルが付くまで明白な方法で続きます。これを行う理由は、頂点をキューに保存し、それらを「最初に残す」ことです。この時間を実行する簡単な方法はありますか?O(n+m)O(n+m)O(n+m) すべてのステップでBFSを実行することで問題を解決できます。しかし最悪の場合、すべてのステップですべての頂点を通過し、ちょうど2つのリーフを削除してキューに入れます。これには二次時間がかかると思います。 別のアイデアは、最初にすべての葉を見つけ、次にすべての葉からBFSを実行することでした。これは私に望ましい解決策を与えません。たとえば、次の図のような「クラウングラフ」の種類を考えます。目的のソリューションが示されていますが、各リーフからBFSを起動すると、2つのラベルのみが使用されます。 理想的には、線形時間アルゴリズムの説明と実装も簡単です。
12 algorithms  trees 

2
正方形の直交ポリゴンをタイリングする
直交多角形(辺が軸に平行な多角形)が与えられた場合、和集合が多角形に等しい内部で分離した正方形の最小セットを見つけたいです。 次のようなわずかに異なる問題への参照をいくつか見つけました。 カバー正方形直交ポリゴン-私の問題と同様に、しかし被覆正方形は重複させます。この問題には多項式解があります(Aupperle、Conn、Keil and O'Rourke、1988 ; Bar-Yehuda and Ben-Hanoch、1996)。 直交ポリゴンを長方形にタイル化/分解/分割します。この問題には多項式解があります(Keil、2000 ; Eppstein、2009)。 長方形で直交ポリゴンをカバーする-この問題はNP完全であることが知られています(Culberson and Reckhow、1988)。 私は、最小限のアルゴリズムを探していますタイリングと正方形。

3
NFAが別のNFAのサブセットを受け入れるかどうかの効率的なテストはありますか?
したがって、正規言語が正規言語サブセットであるかどうかのテストは決定可能です。両方をDFAに変換し、計算してから、この言語が空かどうかをテストできるからです。RRRSSSR∩S¯R∩S¯R \cap \bar{S} ただし、これにはDFAへの変換が必要であるため、DFA、ひいてはテストアルゴリズムが、入力NFAの状態の数に関して指数関数的になる可能性があります。 多項式時間でこれを行う既知の方法はありますか?一般に、この問題はCo-NPが完全であることが証明されていますか? では受け入れられるがでは受け入れられない単語は多項式証明者になるため、問題はCo-NPにあることに注意してください。RRRSSSR⊈SR⊈SR \not \subseteq S 編集:これは、そのような単語が状態の数で多項式になるという保証がないため、正しくありません。

3
非常に大きなファイルで最も多く発生する要素を見つける
私はこのインタビューの質問をたくさん聞いたので、良い答えが何であるかについていくつかの意見をもらいたいと思っていました:10GB以上の大きなファイルがあり、どの要素が最も多く発生しているのか、良い方法を見つけたいこれをする? 多くのメモリを使用するため、マップで繰り返し追跡するのはおそらく良い考えではありません。また、エントリが入ってくるときに追跡するのは、この質問が提起されたときにファイルがすでに存在するため、最大のオプションではありません。 ファイルを分割して複数のスレッドで繰り返し処理し、それらの結果を結合することを含めた他の考えもありますが、マップのメモリの問題は依然として残っています。

2
二重重みパラメータを持つ最小スパニングツリー
グラフ考えG(V,E)G(V,E)G(V,E)ます。各エッジeeeは2つの重みAeAeA_eとBeBeB_eます。製品最小化スパニングツリー検索(∑e∈TAe)(∑e∈TBe)(∑e∈TAe)(∑e∈TBe)\left(\sum_{e \in T}{A_e}\right)\left(\sum_{e \in T}{B_e}\right)。アルゴリズムは、に関して多項式時間で実行する必要があります。V | 、| E | |V|,|E||V|,|E||V|, |E|。 スパニングツリー(Kruskal、Prim、Edge-Deletion)に従来のアルゴリズムを適用することは困難です。解決方法 ヒントはありますか?

4
有理数の比較
所与及び、a,b,c,d∈Na,b,c,d∈Na,b,c,d \in \mathbb Nb,d∉{0}b,d∉{0}b,d \notin \{0\} ab&lt;cd⟺ad&lt;cbab&lt;cd⟺ad&lt;cb \begin{eqnarray*} \frac a b < \frac c d &\iff& ad < cb \end{eqnarray*} 私の質問は: 与えられa,b,c,da,b,c,da,b,c,d 我々は決定することができると仮定すると、における、決定するどのような方法がある乗算(または分割)、プリフォームすることなくおよび。または、方法がないという何らかの証拠があります。x&lt;y∈Zx&lt;y∈Zx < y \in \mathbb ZO(|x|+|y|)O(|x|+|y|)\mathcal{O}(|x| +|y|)ad&lt;cbad&lt;cbad<cba⋅da⋅da\cdot dc⋅bc⋅bc \cdot b 分母を乗算するよりも有理数を比較するための高速な方法はありますか。

2
次数分布からグラフを再構築する
次数分布が与えられた場合、与えられた次数分布に従うグラフをどのくらい速く構築できますか?リンクまたはアルゴリズムのスケッチが良いでしょう。アルゴリズムは、グラフを作成できない場合は「no」を、複数のグラフを作成できる場合はいずれかの例を報告する必要があります。

1
Coddのリダクションアルゴリズムについて
Coddのアルゴリズムは、タプル関係計算の式を関係代数に変換します。 アルゴリズムの標準実装はありますか? このアルゴリズムはどこでも使用されていますか?(業界ではSQLとバリアントのみが必要なようです。学界のデータベース理論家についてはわかりません。) 削減の複雑さは何ですか? これは1年以上前にSOに投稿されましたが、良い答えを受け取りませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.