Кіріспе

Жол табу және графты аралау үшін қолданылатын алгоритм. A* (айтылуы "Эй Стар") – графты аралау және жол табу алгоритмі, ол компьютерлік ғылымның көптеген салаларында толықтығы, оңтайлылығы және тиімділігі үшін қолданылады. Салмақты граф, бастапқы түйін және мақсатты түйін берілген жағдайда, алгоритм бастапқы түйінден мақсатқа дейінгі ең қысқа жолды (берілген салмақтар бойынша) табады. Бір маңызды практикалық кемшілігі – кеңістіктік күрделілігі, мұнда d – шешімнің тереңдігі (ең қысқа жол) және b – тармақталу факторы (көрші түйіндердің орташа саны), себебі ол жасалған барлық түйіндерді жадта сақтайды. Сондықтан, практикалық жол жүру жүйелерінде, ол әдетте графты алдын ала өңдеу арқылы жақсы нәтижелерге қол жеткізе алатын алгоритмдермен, сондай-ақ жадты шектеулі пайдаланатын тәсілдермен озып кетеді; алайда, A* әлі де көп жағдайда ең жақсы шешім болып табылады. Питер Харт, Нильс Нильссон және Бертрам Рафаэль Стэнфорд зерттеу институтының (қазір SRI International) қызметкерлері алғаш рет 1968 жылы осы алгоритмді жариялады. Оны Дикстра алгоритмінің кеңейтілген нұсқасы деп қарастыруға болады. A* іздеуді басқару үшін эвристика қолдану арқылы жақсы нәтижелерге қол жеткізеді. Дикстра алгоритмімен салыстырғанда, A* алгоритмі тек белгілі бір бастапқы түйінден белгілі бір мақсатқа дейінгі ең қысқа жолды ғана табады, ал барлық мүмкін мақсаттарға дейінгі ең қысқа жол ағашын емес. Бұл нақты мақсатқа бағытталған эвристиканы пайдалану үшін қажетті құрбандық. Дикстра алгоритмі үшін, ең қысқа жол ағашы толығымен құрылғандықтан, әр түйін мақсат болып табылады және нақты мақсатқа бағытталған эвристика болуы мүмкін емес.

Тарих

A* өз іс-әрекеттерін жоспарлай алатын мобильді робот құру мақсатымен жасалған Shakey жобасының бір бөлігі ретінде құрылды. Нильс Нильссон бастапқыда Shakey-дің жол жоспарлауы үшін Graph Traverser алгоритмін қолдануды ұсынды. Graph Traverser эвристикалық функция h(n) арқылы басқарылады, бұл n торабынан мақсатты торапқа дейінгі шамаланған қашықтық; ол g(n) – бастапқы тораптан n-ге дейінгі қашықтықты толығымен назарға алмайды. Бертрам Рафаэль g(n) + h(n) қосындысын пайдалануды ұсынды. Питер Харт қазір қабылдану және эвристикалық функциялардың дәйектілігі деп аталатын ұғымдарды ойлап тапты. A* бастапқыда жол құны оның бағаларының қосындысы болған кезде ең төмен құнды жолдарды табу үшін жасалған, бірақ A*-ны шығындар алгебрасының шарттарын қанағаттандыратын кез келген мәселе үшін оңтайлы жолдарды табу үшін де қолдануға болатыны көрсетілді. 1968 жылғы бастапқы A* мақаласында дәйектілік қажет емес деп айтылған, бірақ бұл 1985 жылы Дехтер мен Перлдің A* оптималдығын (қазіргіде оптималды тиімділік деп аталады) зерттеген толыққанды зерттеуінде жалған екені дәлелденді. Олар дәйектілігі жоқ, бірақ қабылдануы бар эвристикалық функциясы бар A*-ның басқа A* сияқты алгоритмге қарағанда шексіз көп түйіндерді кеңейтетін мысалын келтірді. Жалпы тереңдікке бірінші іздеуді A* арқылы жүзеге асыруға болады, өте үлкен мәнмен инициализацияланған жаһандық C санағы бар деп есептей отырып. Әрбір түйін өңделген кезде, біз оның жаңадан ашылған барлық көршілеріне C мәнін тағайындаймыз. Әрбір тағайындалғаннан кейін, санақты C бірге кемітеміз. Осылайша, түйін неғұрлым ертерек табылса, оның h(x) мәні соғұрлым жоғары болады. Дикстра алгоритмі де, тереңдікке бірінші іздеу де әр түйінде h(x) мәнін қоспай, тиімдірек жүзеге асырылуы мүмкін.

Аяқтау және толықтығы

А* шекті графтарда теріс емес жиек салмақтарымен тоқтатылуы және толықтығы кепілдендіріледі, яғни егер шешім (бастапқы нүктеден мақсатқа дейінгі жол) болса, ол әрқашан табылады. Шегі шексіз графтарда, шекті тармақталу коэффициентімен және нөлден қашық (бірқатар тұрақты үшін) жиек құндары болғанда, А* тек қана шешім болған жағдайда тоқтатылады. Олар Alts және P анықтамаларының әртүрлі нұсқаларын, А* эвристикасының тек қана қабылдануына немесе тұрақты және қабылдануына қарай қарастырды. Олардың дәлелдеген ең маңызды оң нәтижесі – А*, тұрақты эвристикамен, барлық «патологиялық емес» іздеу мәселелері бойынша барлық қабылданатын А* сияқты іздеу алгоритмдеріне қатысты оптималды тиімділікке ие. Олардың патологиялық емес мәселе туралы түсінігі қазіргі кезде «теңдіктерді бұзуға дейін» дегенімізді білдіреді. Бұл нәтиже А* эвристикасы қабылданатын, бірақ тұрақты болмаса қолданылмайды. Мұндай жағдайда Дехтер және Перл кейбір патологиялық емес мәселелерде А*-ға қарағанда әлдеқайда аз түйіндерді кеңейте алатын А* сияқты алгоритмдердің бар екенін көрсетті. Оптималды тиімділік – кеңейтілген түйіндер жиынтығына, түйін кеңейтулерінің санына емес (А* негізгі циклінің итерацияларының саны). Қолданылатын эвристика қабылданатын, бірақ тұрақты болмаса, түйін А* арқылы көп рет, ең жаман жағдайда экспоненциалдық санмен кеңейтілуі мүмкін. Мұндай жағдайда Дикстра алгоритмі А*-дан айтарлықтай артық болуы мүмкін. Дегенмен, соңғы зерттеулер бұл патологиялық жағдай тек іздеу графының жиек салмағы графтың мөлшеріне экспоненциалдық болатын және кейбір тұрақсыз (бірақ қабылданатын) эвристикалар А* іздеулерінде түйін кеңейтулерінің азаюына әкелуі мүмкін белгілі бір жасалма жағдайларда ғана кездесетінін анықтады.