D* (изговара се „Д звезда") је било који од следећа три сродна инкрементациона алгоритма претраге:
Сва три алгоритма претраге засноване су на истим основним претпоставкама, а то је проблем планирања путање, у којој робот мора да се креће ка датом циљу чије су координате на непознатом терену. Он прави претпоставке о непознатом делу терена (нпр. да на том терену не постоје препреке и сл.) и проналази најкраћи пут од своје тренутне координате до координате циља под овим претпоставкама. Робот потом следи пут. Када се посматра нова мапа информација, додају се и информације о мапи и ако је потребно, репланирање новог најкраћег пута од својих тренутне координате. Алгоритам понавља процес док робот не достигне циљне координате или утврди да циљне координате не могу бити постигнуте. При прелазу кроз непознат терен, нове препреке могу бити често откривене, тако да ово репланирање треба да буде брзо.
D* и његове варијанте су у широкој употреби за мобилне роботе као и код аутономних возила за навигацију. Тренутни системи се обично заснива на D* Lite.
Оригинални D* представио је Ентони Стенц 1994. D* Име потиче од термина „Динамичан А* ", јер се алгоритам понаша као звезда.
Основне операције D* су наведене у наставку. Као и Дијкстра алгоритам и А*, и D* води листу чворова које треба проценити, која је позната као „отворена листа“. Чворови су означене једном од следећих ознака:
Алгоритам ради тако итеративно изабира чвор из отворене листе и означује га. Тада се пропагира промене чвора да код цве суседне чворове и ставља их на отвореној листи. Овај процес се зове „експанзија“. За разлику од А*, који следи пут од почетка до краја, D* почиње претраживањем уназад од циљног чвора. Сваки такав чвор има показивач уназад који се односи на следећи чвор који води до циља, а сваки чвор зна тачну цену на мети. Када почетни чвор следећи који треба буде „проширен“, то значи да је алгоритам завршен, а пут до циља може се наћи једноставно пратећи показиваче уназад.
Када се открије препрека на путу кроз који се жели прећи, све тачке које су погођене поново се постављају у отвореној листи, и њих ожначавамо са РАСТ. Пре тога тим чворовима се повећава цени, међутим, алгоритам проверава своје суседе и испитује да ли може да смањи трошкове на чвора. Ако не, стсње се с преноси на све потомке чворова, односно, чворови који имају показиваче на њега. Тада се чворови оцењују. Када чворови означени са „РАСТ“ могу бити редуковани, њихов бекпоинтер се ажурира и прелазу стање „ОПАДАЊА“. Ови таласи подизање и спуштање су срце D*. Алгоритам је само радио на тачкама које су погођене променама цене.
Овог пута, препрека се не може заобићи тако елегантно. Ниједна тачка не може да пронађе нови пут преко комшија. Стога, они настављају да пропагирају своје повећање цене. Само изван канала се могу наћи тачке, које могу довести до одредишта путем одрживог пута. На тај начин се два нижа таласа развијају, тако што се прошире до недоступних означених тачка са новим информацијама о рутама.
Као што само име сугерише, са фокусом D* је продужетак од D* који користи хеуристике да се фокусира на пропагира РАСТ и ОПАДАЊЕ ка роботу. На овај начин, само се важна стања ажурирају, на исти начин на који се израчунава цена у А* само за неке од чворов.
D* Lite се не заснива на оригинални D* или D* Фокусирани, али примењује исту понашање. То је једноставније за разумевање и може се реализовати у мањим бројем линија кода, зато се и назив "D* Lite". По пперформансама он је бољи од фокусираног D*. D* Lite је заснована на доживотном планирању А*, који је уведен од стране К. Лихачев неколико година раније.
За D*, важно је направити разлику између текуће и минималне цене. Прво је важно у тренутку наплате, а други је критичн јер се сортира отворена листа. Функција која даје минималну цену је увек има најнижу цену у тренутној тачки, јер је то први улазак у отворену листу за њу.