الگوریتم های A * و Dijkstra در مسیر یابی و عبور گراف پایه هستند.آنها به طور گسترده در سیستم های ناوبری، رباتیک و مسیریابی شبکه استفاده می شوند. درک پایه های ریاضی آنها کمک می کند تا بهینه سازی عملکرد و قابلیت استفاده آنها.

نمودار نمایندگی

هر دو الگوریتم بر روی گراف ها کار می کنند که شامل گره ها (هر دو لبه) و لبه ها هستند، ممکن است وزن هایی داشته باشند که هزینه ها، مسافت ها یا زمان ها را نشان می دهند. نمودار می تواند هدایت یا بدون هدایت باشد و وزن ها معمولاً غیر منفی هستند.

هزینه های عملیاتی و اکتشافی

هسته این الگوریتم ها شامل محاسبه هزینه برای رسیدن به هر گره است. الگوریتم Dijkstra از هزینه تجمعی از گره شروع استفاده می کند، در حالی که A * برآورد مبهم از هزینه باقی مانده به هدف اضافه می کند.

فرمول ریاضی

اجازه دهید G = (V، E) یک نمودار با سرگیجه V و لبه E باشد. هر لبه (u، v) دارای یک وزنه w (و، v) هدف این است که کوتاه ترین مسیر را از گره های شروع به سمت گره هدف پیدا کنید.

الگوریتم Dijkstra فاصله d (v) را برای هر اندکس v به روز می کند، که به عنوان d(s) = 0 و d (v) = ⁇ برای v ⁇ s، آن را به طور غریزی انتخاب کرده اند و به طور دقیق سرگیجه با کوچکترین d (v)، سپس لبه های همسایه خود را آرام می کند.

A * این را با ترکیب یک h اکتشافی (v) برآورد هزینه از v به t. تابع اولویت تبدیل به f (v) = d(v) + h (v) می شود. الگوریتم گره ها را بر اساس پایین ترین f (v) گسترش می دهد.

الگوریتم بهره وری

کارایی بستگی به ساختارهای داده ای دارد که الگوریتم Dijkstra پیچیدگی زمانی O (E) + |V| log |V|) با یک صف اولویت دارد. A * می تواند سریعتر باشد اگر Heuristic به خوبی طراحی شده باشد، تعداد گره های گسترش یافته را کاهش دهد.

  • نمودار با وزن های غیر منفی
  • دانلود زیرنویس فارسی فیلم A *
  • صف اولویت برای انتخاب گره
  • آرامش از لبه ها برای به روز رسانی هزینه ها