問題タブ [heuristics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
229 参照

algorithm - ユーザー選択アルゴリズムの確認方法

ユーザーの好みに合うアイテムのリストを選択するアルゴリズムがあります。
機密性の問題のため、アルゴリズムの詳細はスキップします...

今、私はそれを統計的にチェックする方法を考えようとしています。
私が今それをチェックしている方法は次のとおりです。

  1. アルゴリズムは、ユーザーごとに最良の結果を取得します。
  2. 上位 5 つの結果と下位 5 つの結果をシャッフルします。
  3. 人が気に入った結果を順番にリストする (0 = 最も気に入った、9 = 気に入らなかった)
  4. ユーザーの結果をアルゴリズムの結果と比較します。

私がこれを行っているのは、アルゴリズムが良い結果を選択することを示すために、いくつかの悪い結果を入れて、アルゴリズムが悪い結果も知っていることを示す必要があると考えたからです。

だから、私が求めているのは:

上位の結果と下位の結果をシャッフルするのは良い考えですか?

そうでない場合は、アルゴリズムがユーザーの好みにどの程度一致しているかについての優れた統計を取得する方法についてのアイデアはありますか (ユーザーが選択できるものがあります)。

0 投票する
2 に答える
210 参照

algorithm - 部屋の 3D 配置を最適化しますか?

ノードが 3x3x1 の部屋を表し、頂点が接近の必要性を表すグラフがあるとします。全体的な近さを最適化するには、3D 空間にどのように配置する必要がありますか?

例 (ランダム) データ構造:

(スタックオーバーフローで見られるほとんどの質問とは異なるため、どこでこの質問をするべきか正確にはわかりません。ソリューション/ヒューリスティックアルゴリズムのプログラミングに興味があります。)

0 投票する
2 に答える
2973 参照

language-agnostic - ペグソリティア / 千空解法

Peg solitaire / Senkuのゲームのソルバーをプログラムする必要があります ここに
既に質問がありますが、提案された答えはバックトラッキングを使用したブルート フォース アルゴリズムであり、これは私が探しているソリューションではありません。 A* アルゴリズムを適用するには、ヒューリスティックを見つける必要があります。残りのペグは、すべての移動で 1 つのペグが破棄されるため、コストが常に均一になるため、適切なヒューリスティックではありません。 何か案は?

0 投票する
1 に答える
1159 参照

python - ヒューリスティック、メタヒューリスティック、または最適化手法に関する「Hello World」の例タイプの基本的なチュートリアルはありますか

私は一生懸命努力していますが、メタヒューリスティックと最適化の問題から始めることができる非常に基本的なチュートリアルをまだ見つけていません. 私はたくさんの本を見てきましたが、それらは数学でいっぱいです。最終的にはそれをしなければならないことはわかっていますが、少なくとも1つの簡単な例が目の前で実行されていれば、本を読むよりも自信を得ることができ、目の前に実用的なものは何もありません.

誰かが小さな問題を説明し、それが実際にどのように適用されるかを知るために、ヒューリスティックを使用してその解決策について説明しているチュートリアルを誰かに教えてもらえますか。

I don't want anyone to write code for me but any tutorial out there which can help me in writing code for those heuristics

任意のプログラミング言語で実行された場合は問題ありませんが、それ以外の場合は、アルゴリズムが特定の問題をどのように解決するかを喜んで確認します.

多くのアルゴリズムがあることは知っていますが、どこから始めればよいかわかりません。どのように機能するかを理解している限り、どの最適化アルゴリズムでも問題ないので、さらに先に進むことができます。

0 投票する
5 に答える
13659 参照

python - PythonでのCSVデータのデータ型認識・推測

私の問題は、大きな CSV ファイルからのデータを処理するコンテキストにあります。

その列で見つかった値に基づいて列のデータ型を決定 (つまり、推測) する最も効率的な方法を探しています。非常に乱雑なデータを扱っている可能性があります。したがって、アルゴリズムはある程度のエラー耐性を持つ必要があります。

次に例を示します。

結論: Python パッケージまたはいずれかを検出できるアルゴリズムを探しています。

  • CSV ファイルのスキーマ、またはそれ以上
  • 配列としての個々の列のデータ型

現在文字列として表現されているデータの型を推測する方法も同様の方向に進んでいます。ただし、多くの大きなスプレッドシート (データの由来) を扱っている可能性があるため、パフォーマンスが心配です。

0 投票する
2 に答える
4565 参照

algorithm - Chomp ゲームのアルゴリズム

Chomp というゲームのプログラムを書いています。ウィキペディアでゲームの説明を読むことができますが、とにかく簡単に説明します。

次元 nxm のチョコレート バーでプレイします。つまり、バーは nxm の正方形に分割されます。各ターンで、現在のプレーヤーは正方形を選択し、選択した正方形の下と右のすべてを食べます。したがって、たとえば、次は有効な最初の動きです。

ここに画像の説明を入力

目的は、対戦相手にチョコレートの最後の部分を強制的に食べさせることです (毒が入っています)。

AI 部分に関しては、深さ切り捨てを伴うミニマックス アルゴリズムを使用しました。しかし、適切な位置評価関数が思いつきません。その結果、私の評価関数では、人間のプレイヤーが私のプログラムに勝つのは非常に簡単です。

誰でもできます:

  • 良い位置評価関数を提案するか、
  • 参考になる情報を提供したり、
  • 代替アルゴリズムを提案しますか?
0 投票する
1 に答える
209 参照

artificial-intelligence - ヒューリスティックを学ぶ前に人工知能を学ぶ必要がありますか

計画とスケジューリングに基づいて、メタヒューリスティックに関する1つのプロジェクトを実行することを計画しています。しかし、私はまだ人工知能の主題を研究していません。私はニューラルネットワークの科目を研究しています。メタヒューリスティックスの本やチュートリアルから直接始めることができるか、メタヒューリスティックスに飛び込む前に人工知能を知る必要があることを知りたい

0 投票する
4 に答える
6277 参照

algorithm - 任意の境界内に任意のポリゴンをパックする

誰かが私の特定のポリゴンパッキング問題に適合する最良のアルゴリズム/ヒューリスティックを教えてくれるかどうか疑問に思いました。境界として単一のポリゴン(凸面または凹面にも穴が含まれる場合があります)と単一の「塗りつぶし」ポリゴン(凸面または凹面の場合もあり、穴が含まれない)が与えられ、指定された数で境界ポリゴンを塗りつぶす必要があります塗りつぶしポリゴンの。(私は2Dで作業しています)。

私が見つけたポリゴンパッキングヒューリスティックの多くは、境界および/または塗りつぶしポリゴンが長方形であり、塗りつぶしポリゴンのサイズが異なることを前提としています。私の場合、塗りつぶしポリゴンは長方形ではないかもしれませんが、すべてがまったく同じになります。

多分これは特定のタイプのパッキング問題ですか?誰かがこのタイプのポリゴンパッキングの定義を持っているなら、私は喜んでグーグルで離れますが、これまでのところ、非常に役立つのに十分似ているものは見つかりませんでした。

ありがとう。

0 投票する
1 に答える
456 参照

algorithm - 各行の合計の最小値を最大化する列のセットを見つけます

行列 A が与えられた場合、各行の一致したセルの合計の最小値を最大化する p 列のセットを探しています。

例: p=2 および A= の場合

1 2 4

3 0 3

5 6 2

C1 と C2 を選択すると、f=min(r1,r2,r3)=min(1+2; 3+0; 5+6)=3 となります。

C1 と C3 を選択すると f=min(1+4; 3+3; 5+2)=5 となり、これが最良の選択です。

そうするアルゴリズムまたはヒューリスティックはありますか..

ありがとう

0 投票する
7 に答える
732 参照

language-agnostic - ソース ファイルで使用されるタブ幅を決定するための適切なヒューリスティックは何ですか?

スペースでインデントされたソース ファイルで使用されるタブ幅を特定したいと考えています。これは、先頭のスペースがインデントにのみ使用され、常にタブ幅の倍数であり、インデントが一度に 1 レベルずつ増加する、特に規則的なインデントを持つファイルでは難しくありません。しかし、多くのファイルは、通常、何らかの形式の垂直方向の配置のために、この種の通常のインデントとは多少異なります。したがって、不規則なインデントの可能性を考慮して、使用されたタブ幅を推定するための優れたヒューリスティックを探しています。

これの動機は、SubEthaEdit エディターの拡張機能を作成することです。残念ながら、SubEthaEdit ではタブ幅をスクリプトで使用できないため、テキストに基づいて推測します。

適切なヒューリスティックは次のようにする必要があります。

  • インタラクティブな使用に十分なパフォーマンス。これが問題になるとは思いません。必要に応じて、テキストの一部だけを使用できます。
  • 言語に依存しない。
  • 適切な最長のタブ幅を返します。たとえば、タブ幅が 4 スペースのファイルは、すべてのインデントが実際には 2 倍のレベルである場合、2 スペース タブのファイルである可能性もあります。明らかに、4 つのスペースが正しい選択です。
  • インデントが完全に規則的である場合は、常に正しくします。

いくつかの単純化要因:

  • 少なくとも 1 行はインデントされていると見なすことができます。
  • タブの幅は、少なくとも 2 つのスペースであると見なすことができます。
  • インデントはスペースのみで行われると想定しても安全です。タブに反対しているわけではありません---逆に、インデントに使用されているタブがあるかどうかを最初に確認し、個別に処理します。これは、タブとスペースが混在するインデントが適切に処理されない可能性があることを意味しますが、重要ではないと考えています。
  • 空白のみを含む行はないと考えられます。
  • すべての言語を正しく処理する必要があるわけではありません。たとえば、lisp や go などの言語では、通常は手作業でインデントを行うことはないため、成功または失敗はまったく関係ありません。
  • 完璧は必要ありません。数行を手動で調整する必要がある場合でも、世界が終わることはありません。

どのようなアプローチを採用し、その長所と短所は何だと思いますか?

回答で動作するコードを提供したい場合、最善の方法はおそらく、ソース ファイルを から読み取り、stdinタブ幅を に書き込むシェル スクリプトを使用することstdoutです。擬似コードまたは言葉による明確な説明でも問題ありません。

いくつかの結果

さまざまな戦略をテストするために、言語ディストリビューションの標準ライブラリ内のファイルにさまざまな戦略を適用できます。おそらく、言語の標準的なインデントに従っているからです。Python 2.7 ライブラリと Ruby 1.8 ライブラリ (システム フレームワークは Mac OS X 10.7 にインストールされます) を検討します。これらのライブラリのタブ幅は、それぞれ 4 と 2 であると予想されます。タブ文字で始まる行があるファイル、または少なくとも 2 つのスペースで始まる行がないファイルは除外されます。

パイソン:

ルビー:

これらの表で、「正しい」は言語標準のタブ幅の決定、「正しくない」は言語標準の幅と等しくないゼロ以外のタブ幅、「なし」はタブ幅がゼロまたはないものとして解釈する必要があります。答え。「モード」は、インデントで最も頻繁に発生する変更を選択する戦略です。「最初」は、最初のインデントされた行のインデントを取ります。"No-long" は、大きなインデントのある行を除外してモードを取る FastAl の戦略であり、数字はインデントの最大許容変更を示します。「LR」は、線形回帰に基づく Patrick87 の戦略であり、行間のインデントの変化と行の絶対インデントに基づくバリアントがあります。"Doublecheck" (だじゃれに抵抗できなかった!) は、FastAl の Mark の修正です。