D*

Из Википедије, слободне енциклопедије

D* (изговара се „Д звезда") је било који од следећа три сродна инкрементациона алгоритме претраге:

  • Оригинални D*, од А. Stentz, који је управо заснован на инкрементационом алгоритму претраге.
  • Фокусирани D*, који је заснован на инкрементационом хеуристички алгоритау претраге у комбинацији са идејама А* и оригиналном D*. Он резултат за даљи развој оригиналног D*.
  • D* Lite, је инкрементациони хеуристички алгоритам за претрагу, конструисаног од стране S. Koenig and M. Likhachev изграђеног на осову LPA* , то је инкрементациони хеуристички алгоритам за претрагу који комбинује идеје А* и динамичког SWSF-FP.

Сва три алгоритма претраге засноване су на истим основним претпоставкама, а то је проблем планирања путање, у којој робот мора да се крећете ка датом циљу чије су координате на непознатом терену. Он прави претпоставке о непознатом делу терена (нпр. да на том терену не постоје препреке и сл.) и проналази најкраћи пут од своје тренутне координате до координате циља под овим претпоставкама. Робот потом следи пут. Када се посматра нова мапа информација, додају се и информације о мапи и ако је потребно, репланирање новог најкраћег пута од својих тренутне координате. Алгоритам понавља процес док робот не достигне циљне координате или утврди да циљне координате не могу бити постигнуте. При прелазу кроз непознат терен, нове препреке могу бити често откривене, тако да ово репланирање треба да буде брзо.

D* и његове варијанте су у широкој употреби за мобилне роботе као и код аутономна возила за навигацију. Тренутни системи се обично заснива на D* Lite.

D*[уреди]

Оригинални D* представио је Ентони Стенц 1994. D* Име потиче од термина „Динамичан А* ", јер се алгоритам понаша као звезда.

Операције[уреди]

Основне операције D* су наведене у наставку. Као и Дијкстра алгоритам и А*, и D* води листу чворова које треба проценити, која је позната као „отворена листа“. Чворови су означене једном од следећих ознака:

  • НОВ, што значи да се никада није стављен на отвореној листи;
  • ОТВОРЕН, што значи да је тренутно на отвореној листи;
  • ЗАТВОРЕН, што значи да више није на отвореној листи;
  • РАСТ, показује да је његово цена већа него када је последње пут био у отвореној листи;
  • ОПАДАЊЕ, указује да је његово цена мсња него када је последње пут био у отвореној листи;

Проширење[уреди]

Алгоритам ради тако итеративно изабира чвор из отворене листе и означује га. Тада се пропагира промене чвора да код цве суседне чворове и ставља их на отвореној листи. Овај процес се зове „експанзија“. За разлику од А*, који следи пут од почетка до краја, Д* почиње претраживањем уназад од циљног чвора. Сваки такав чвор има показивач уназад који се односи на следећи чвор који води до циља, а сваки чвор зна тачну цену на мети. Када почетни чвор следећи који треба буде „проширен“, то значи да је алгоритам завршен, а пут до циља може се наћи једноставно пратећи показиваче уназад.

Руковање препрекама[уреди]

Када се открије препрека на путу кроз који се жели прећи, све тачке које су погођене поново се постављају у отвореној листи, и њих ожначавамо са РАСТ. Пре тога тим чворовима се повећава цени, међутим, алгоритам проверава своје суседе и испитује да ли може да смањи трошкове на чвора. Ако не, стсње се с преноси на све потомке чворова, односно, чворови који имају показиваче на њега. Тада се чворови оцењују. Када чворови означени са „РАСТ“ могу бити редуковани, њихов бекпоинтер се ажурира и прелазу стање „ОПАДАЊА“. Ови таласи подизање и спуштање су срце D*. Алгоритам је само радио на тачкама које су погођене променама цене.

Још једна препрека[уреди]

Овог пута, препрека се не може заобићи тако елегантно. Ниједна тачка не може да пронађе нови пут преко комшија. Стога, они настављају да пропагирају своје повећање цене. Само изван канала се могу наћи тачке, које могу довести до одредишта путем одрживог пута. На тај начин се два нижа таласа развијају, тако што се прошире до недоступних означених тачка са новим информацијама о рутама.

Фокусирани D*[уреди]

Као што само име сугерише, са фокусом D* је продужетак од D* који користи хеуристике да се фокусира на пропагира РАСТ и ОПАДАЊЕ ка роботу. На овај начин, само се важна стања ажурирају, на исти начин на који се израчунава цена у А* само за неке од чворов.

D* Lite[уреди]

D* Lite се не заснива на оригинални D* или D* Фокусирани, али примењује исту понашање. То је једноставније за разумевање и може се реализовати у мањим бројем линија кода, зато се и назив "D* Lite". По пперформансама он је бољи од фокусираног D*. D* Lite је заснована на Доживотном Планирању А*, који је уведен од стране К. Лихачев неколико година раније.

Минимална цена наспрам текућој цени[уреди]

За D*, важно је направити разлику између текуће и минималне цене. Прво је важно у тренутку наплате, а други је критичн јер се сортира отворена листа. Функција која даје минималну цену је увек има најнижу цену у тренутној тачки, јер је то први улазак у отворену листу за њу.