A*で迷路を解く【研究で使うPython #76】

Поділитися
Вставка
  • Опубліковано 19 січ 2025

КОМЕНТАРІ • 8

  • @a-tz2my
    @a-tz2my Рік тому

    関数Hを定義する点に関して質問です.
    func = lambda a,b: (a[0]-b[0])**2+(a[1]-b[0])**2
    上記のようにHを定義していましたが,両方b[0]だとおかしくないですか?
    func = lambda a,b: (a[0]-b[0])**2+(a[1]-b[1])**2
    上の式が正しいのではないかと思うのですがどうでしょうか

    • @PhD-genki
      @PhD-genki  Рік тому +1

      コメントありがとうございます。ご指摘の通りだと思います。間違いました。

    • @PhD-genki
      @PhD-genki  Рік тому +1

      プログラム修正して再アップしました。ご指摘ありがとうございました!

  • @rr-pd2kc
    @rr-pd2kc Рік тому

    ゴールを複数にする場合はどのようにしたらいいのでしょうか。

    • @PhD-genki
      @PhD-genki  Рік тому

      コメントありがとうございます。
      複数のゴールを順番に辿っていくのでしたら、【スタート→ゴール1】の最短経路をA*で解いたあと、【ゴール1を新たなスタート→ゴール2】の最短経路をA*で解く、【ゴール2を新たなスタート→ゴール3】の最短経路をA*で解く、というように【ゴールを新たなスタート】として、繰り返しA*を適用することで解くという方法が思い浮かびました。
      ゴールが複数あって、その中のどれにたどり着いても良いということでしたら、良い方法はぱっとは思いつきませんでした。

    • @rr-pd2kc
      @rr-pd2kc Рік тому

      返信ありがとうございます。
      建物などを模して複数の出口のどこにでも出ていいようにするのが面白いと思い考えて見たのですが、自分では全く思いつきませんでした。
      斜めに行くという選択肢を取る場合は[1,0], [0,1], [-1,0], [0,-1],[-1, -1], [-1, 1], [1, -1], [1, 1]のように選択肢を増やしてあげればいいのでしょうか。

    • @PhD-genki
      @PhD-genki  Рік тому

      @@rr-pd2kc 斜めはそれで良いかと思います。
      最初の質問について、ChatGPTとも相談してみました。ChatGPTは、
      「A*(エースター)アルゴリズムは複数の目標地点(出口など)に対応できます。A*アルゴリズムは、開始点から目標地点までの最短経路を見つけるために使われる経路探索アルゴリズムです。複数の目標地点がある場合には、それぞれの目標地点に対する経路を個別に計算し、最も効率的な経路を選択します。」との回答で私もこれに同意します。
      それぞれの出口に対して最短経路が求まりますので、「どこに出ても良い」とするならば、各出口に対して優先順位をつけない(ランダムにする)という方法を各エージェントに取らせれば良いのかなと思いました。

    • @rr-pd2kc
      @rr-pd2kc Рік тому

      @@PhD-genki お調べいただきありがとうございます泣
      イメージではとてもピンときました!
      しかし、自分の知識ではここから改善していくのは難しそうです。。。