(古代の遺産)ASTARヒューリスティック機能の設計

最初のポストとして、私は出て来て、彼らは私のアイデンティティと、物品の状況にふさわしい記事を書くために持っているか、右?
まず不注意な髪質について私Tucaoを聞かせて、私はカリキュラムクラス兄弟隣のコレクションはあなたがいないことを気にしません私は。すぐにバーに行く、非常に情熱的なBB圧力、ボリューム、騒ぎを感じる
あなたは迷路にいる場合は栗の場合、ヒューリスティック機能図に基づいてトラバーサルアルゴリズムのプロトタイプであるASTARアルゴリズムについて簡単に、しかし、あなた口の方向を知って、そしてあなたが進むべき道をエクスポートしようとする必要があり、その後、最初のヒューリスティック関数を決定したことにより、ユークリッド距離の計算によると、各ポイントの出口からどこまでかを決定するために周りのポイントを削除ポイント近距離移動を選択し、これはモデルの機能に触発導くアルゴリズムであり、会場はBaiduの百科事典http://baike.baidu.com/link?urlにヒューリスティック検索が何であるかを知らない場合には= tHf4ILIGdRGAgQwAnRPGdy8aSQ66aa5cx5iiWxyveoukKN9Fq2FJ6osqqK0x_IOCMHsgXPAePQLYbsN278sLWq
良い滴が、実際には、自分自身の理解を作るためにのみ、上記のようにこんにちは皆はオフ、私は次明確にしたいものであることを理解します どのようなコンピュータではなく、プロの学生はここを参照してください場合は、意識的にそれのヒューリスティック検索の魅力を感じる伝説(笑)を参照することにより下へ進んでください。

通常、A *アルゴリズム

    通常的A*算法主要有两种估值函数,曼哈顿距离以及距离消耗步数进行结合,最终得到权值F可以做为下一步将要移动的位置,举个图例就是: 
                   
    注:右图左上角为图形边界30*30,右下角为搜索次数,起始点为(12,5),终止点为(12,24).最终搜索到的点为423*4(最大值).

私たちが見ることができるのチャートによると、通常、ウェイファインディングは最短経路を得ることができますが、ここでの私の考えは、私はいくつかの犠牲を払う必要があったこれを達成するために、ゲームアプリケーションでその方法を見つけることです。
この最適化を行うにはときに最初のオリジナル!バーに基づいて調整されている
基地
ヒューリスティック関数F = G + Hを用い、
Gどこへ行くのに必要な移動するステップ数=、
H = ABS(this-> X - Goal.x)+ ABS(この- > Y - Goal.y);
。。//この点は、それが指すようにX、Yは、座標情報が含まれている現在位置である目標対象点
ので、このF(x、y)に応じて、我々は、図を得ます。簡単な最初の最適化によって、その後の検索は、最初に我々はF値に応じて配置された順番にすべての検索チームを入力するためのプライオリティキューを構築し、これは、H値の割合を増やすことができるので、目標方向に向けて検索しますチームにポイントを減らす、知っておく必要があるたびにポイントに検索それは4(4に基づいて移動方向)以下でのポイントがありそうであることを意味しポイントを減らし、最適化の方向である、ポイントの検索を広げることです検索効率を向上させるためには、プライオリティキューを入力します。私は最初の優先順位をやっています 。の
F = sideMAX * H + G; // sideMAX 二つの境界に大きな値
次いで、今回の結果は以下の通りである:
再び栗図それは〜

この時点で、検索がある程度G目標値の怠慢を指すように、より傾斜になりますので、検索は、このように最初の最適化を完了し、一般的な方向に強調され、満足に喜ばしい。
しかし、私はそうは思いません誰もが満足することができ、そして私がように自信を持って作られているので、それは確かに少し小さい99人の友人である。
まず、私が指摘したいと思い、マンハッタン距離H = ABS(this-> X - Goal.x)+ ABS(this-> Y - Goal.y)、その値が目標によって外側に広がるダイヤモンド配布ポイントが提示されているので敏感ではないが、距離を標的とするために、これは意味距離菱形等価の側、モバイルそのこのダイヤモンドはすべてそれを行うにはどのようにして、サイドエントリープライオリティキューを持つことになります(注:以下のすべての点がダイヤモンドの辺の長さが同等のポイントと呼ばれる構成)?
まず、マンハッタン距離の計算の交換が、それは、ユークリッド距離に置き換えられます(式ベースの2点間の距離を座標平面矩形である単純なポイント)
D = SQRT(POW(Goal.x - this-> X、2)+ POW(Goal.y - this-> Y、2))。 // SQRTは平方根、POW(X 2)X ^ 2側のため。である
オイラーマンハッタン異なる同等の点から得られるに従って、しかし、この卵は、それがどのような使用ですか?まず ダイヤモンドは、それが目標点によって円形の拡散のサークル外のように、良く見えます。

さんがそれを見てみましょう!

これらは、ケースマンハッタン距離値であります

持続する!

以下では、ユークリッド距離の値の場合であります

 ![](https://img2018.cnblogs.com/blog/1641852/201909/1641852-20190902210533619-1385322538.png)

    你会发现有一些些不同,首先欧拉数据类型比较小,存在浮点数,这就导致了它不能和G值共存(忘了G值意义的往回看看),而曼哈顿为整数,呈现出有棱有角的形式.从图上看欧拉距离更趋近于圆形而非菱形,这就导致了在一些凹障碍的时候,两个的表示会不太一样,现在我们看看接下来的优化,好滴,这就再举个栗子!
左图为F = G + sideMAX * H, 右图为F = D;

(12,10)のための開始点、終了点(12、24)。

             ![](https://img2018.cnblogs.com/blog/1641852/201909/1641852-20190902210540292-1176282956.png) ![](https://img2018.cnblogs.com/blog/1641852/201909/1641852-20190902210545770-1846359370.png)




    接着简单说明一下两者的区别的各个的优势,这也是我发这篇文章的最最主要的目的,先看左图搜索次数,其上图表示搜索了点的分布情况,这里我们在其右下角有一个路线的统计,这个196是统计着所有搜索过的路径,简单点看图,对,就左图中上图的方块数量,那个数量就等同于该值,这就可以作为两者的效率的一种简单的比较了(请允许我不用O(N)之类的说法),那么开始好好说明一下吧~    

右の左のより効率がはるかに高速であるが、左の上に指摘したように、それはGの使用および値をサポートされていないためする、両者の差であり、その最短経路に導くことができない、マンハッタンダイヤモンドから生成されます結果として、ここで私は、次のステップを最適化します -

私はいくつかの学生が存在しているかわからないが、原料のこの種にあなたを勉強したいと思い、=が、私は、彼らがポイントを表示するために持っているか、出てき始めた - 具体的なヒューリスティック機能、=知りたい学生に任されていますもの、それは - 棚の上のいくつかのフォローアップ研究がある、と私は=私のところに来て、さらに問題下の結果を決定できるようにする必要があります - =〜

おすすめ

転載: www.cnblogs.com/juwan/p/11449030.html