Материалдар / Графтағы алгоритмдері. Дейкстра алгоритмі.
МИНИСТРЛІКПЕН КЕЛІСІЛГЕН КУРСҚА ҚАТЫСЫП, АТТЕСТАЦИЯҒА ЖАРАМДЫ СЕРТИФИКАТ АЛЫҢЫЗ!
Сертификат Аттестацияға 100% жарамды
ТОЛЫҚ АҚПАРАТ АЛУ

Графтағы алгоритмдері. Дейкстра алгоритмі.

Материал туралы қысқаша түсінік
Графтағы алгоритмдері. Дейкстра алгоритмі.
Авторы:
Автор материалды ақылы түрде жариялады. Сатылымнан түскен қаражат авторға автоматты түрде аударылады. Толығырақ
08 Сәуір 2024
122
0 рет жүктелген
250 ₸
Бүгін алсаңыз
+13 бонус
беріледі
Бұл не?
Бүгін алсаңыз +13 бонус беріледі Бұл не?
Тегін турнир Мұғалімдер мен Тәрбиешілерге
Дипломдар мен сертификаттарды алып үлгеріңіз!
Бұл бетте материалдың қысқаша нұсқасы ұсынылған. Материалдың толық нұсқасын жүктеп алып, көруге болады
img_page_1
Ресми байқаулар тізімі
Республикалық байқауларға қатысып жарамды дипломдар алып санатыңызды көтеріңіз!
Материалдың қысқаша түсінігі
Графтағы алгоритмдері. Дейкстра алгоритмі.

1 слайд
Графтағы алгоритмдері. Дейкстра алгоритмі.

1 слайд

Графтағы алгоритмдері. Дейкстра алгоритмі.

Дейкстра алгоритм і деген не және ол не үшін керек?  Ең қысқа жолды табудың мысалын қарастырайық. Қалалық аймақтарды бай

2 слайд
Дейкстра алгоритм і деген не және ол не үшін керек?  Ең қысқа жолды табудың мысалын қарастырайық. Қалалық аймақтарды байланыстыратын автомобиль жолдарының желісі берілген. Кейбір жолдар бір бағытта жүреді. Қала орталығынан ауданның әр қаласына ең қысқа жолдарды табыңыз.  Бұл мәселені шешу үшін Дайкстра алгоритмін - 1959 жылы голландиялық ғалым Э.Дейкстра ойлап тапқан графиктер бойынша алгоритмді қолдануға болады. Графтың бір шыңынан басқаларына дейін ең қысқа қашықтықты табады. Теріс салмақ жиектері жоқ графиктер үшін ғана жұмыс істейді.

2 слайд

Дейкстра алгоритм і деген не және ол не үшін керек?  Ең қысқа жолды табудың мысалын қарастырайық. Қалалық аймақтарды байланыстыратын автомобиль жолдарының желісі берілген. Кейбір жолдар бір бағытта жүреді. Қала орталығынан ауданның әр қаласына ең қысқа жолдарды табыңыз.  Бұл мәселені шешу үшін Дайкстра алгоритмін - 1959 жылы голландиялық ғалым Э.Дейкстра ойлап тапқан графиктер бойынша алгоритмді қолдануға болады. Графтың бір шыңынан басқаларына дейін ең қысқа қашықтықты табады. Теріс салмақ жиектері жоқ графиктер үшін ғана жұмыс істейді.

Мысал  1 шыңнан басқаларына дейін ең қысқа қашықтықты табу талап етілсін.  Шеңберлер шыңдарды, сызықтар олардың арасындағы ж

3 слайд
Мысал  1 шыңнан басқаларына дейін ең қысқа қашықтықты табу талап етілсін.  Шеңберлер шыңдарды, сызықтар олардың арасындағы жолдарды (графиктің шеттері) көрсетеді. Шеңберлер төбелердің сандарын көрсетеді, шеттерінен жоғары олардың салмағы - жолдың ұзындығы көрсетілген. Әр шыңның жанында қызыл затбелгі бар - бұл шыңға 1 шыңнан ең қысқа жолдың ұзындығы.

3 слайд

Мысал  1 шыңнан басқаларына дейін ең қысқа қашықтықты табу талап етілсін.  Шеңберлер шыңдарды, сызықтар олардың арасындағы жолдарды (графиктің шеттері) көрсетеді. Шеңберлер төбелердің сандарын көрсетеді, шеттерінен жоғары олардың салмағы - жолдың ұзындығы көрсетілген. Әр шыңның жанында қызыл затбелгі бар - бұл шыңға 1 шыңнан ең қысқа жолдың ұзындығы.

Инициализация  Метка самой вершины 1 полагается равной 0, метки остальных вершин – недостижимо большое число (в идеале — бес

4 слайд
Инициализация  Метка самой вершины 1 полагается равной 0, метки остальных вершин – недостижимо большое число (в идеале — бесконечность). Это отражает то, что расстояния от вершины 1 до других вершин пока неизвестны. Все вершины графа помечаются как непосещенные.

4 слайд

Инициализация  Метка самой вершины 1 полагается равной 0, метки остальных вершин – недостижимо большое число (в идеале — бесконечность). Это отражает то, что расстояния от вершины 1 до других вершин пока неизвестны. Все вершины графа помечаются как непосещенные.

Бірінші қадам  1 шыңында минималды затбелгі бар, оның көршілері - 2, 3 және 6 шыңдары. Біз шыңның көршілерін кезекпен айналып

5 слайд
Бірінші қадам  1 шыңында минималды затбелгі бар, оның көршілері - 2, 3 және 6 шыңдары. Біз шыңның көршілерін кезекпен айналып өтеміз.  1 шыңының бірінші көршісі - 2 шыңы, өйткені оған жол ұзындығы минималды. 1 шыңы арқылы өтетін жолдың ұзындығы 1 шыңына дейінгі ең қысқа қашықтықтың қосындысына (оның белгісінің мәні) және 1-ден 2-ге дейінгі жиектің ұзындығына тең, яғни 0 + 7 = 7. Бұл 2-шыңның қазіргі таңбасынан аз (10000), сондықтан 2-шыңның жаңа белгісі 7-ге тең.  Сол сияқты барлық басқа көршілер үшін жол ұзындығын табамыз (3 және 6 шыңдары).  1 шыңының барлық көршілері тексеріледі. 1 шыңына дейінгі ең аз қашықтық соңғы болып саналады және қайта қарауға жатпайды. 1 шыңы барған ретінде белгіленеді.

5 слайд

Бірінші қадам  1 шыңында минималды затбелгі бар, оның көршілері - 2, 3 және 6 шыңдары. Біз шыңның көршілерін кезекпен айналып өтеміз.  1 шыңының бірінші көршісі - 2 шыңы, өйткені оған жол ұзындығы минималды. 1 шыңы арқылы өтетін жолдың ұзындығы 1 шыңына дейінгі ең қысқа қашықтықтың қосындысына (оның белгісінің мәні) және 1-ден 2-ге дейінгі жиектің ұзындығына тең, яғни 0 + 7 = 7. Бұл 2-шыңның қазіргі таңбасынан аз (10000), сондықтан 2-шыңның жаңа белгісі 7-ге тең.  Сол сияқты барлық басқа көршілер үшін жол ұзындығын табамыз (3 және 6 шыңдары).  1 шыңының барлық көршілері тексеріледі. 1 шыңына дейінгі ең аз қашықтық соңғы болып саналады және қайта қарауға жатпайды. 1 шыңы барған ретінде белгіленеді.

Екінші қадам  Алгоритмнің 1-қадамы қайталанады. Қаралмаған шыңдардың қайсысын «ең жақын» екенін табыңыз. Бұл 7 деп белгіленген

6 слайд
Екінші қадам  Алгоритмнің 1-қадамы қайталанады. Қаралмаған шыңдардың қайсысын «ең жақын» екенін табыңыз. Бұл 7 деп белгіленген 2 шыңы.  Біз қайтадан таңдалған шыңның көршілерінің жапсырмаларын азайтуға тырысамыз, оларға екінші шыңнан өтуге тырысамыз. 2 шыңының көршілері - 1, 3 және 4 шыңдары.  1-ші төбеге кіріп үлгерген. 2 шыңының келесі көршісі - 3 шыңы, өйткені онда шыңдардың ең аз жапсырмасы барылмаған деп белгіленеді. Егер сіз оған 2 арқылы барсаңыз, онда мұндай жолдың ұзындығы 17-ге тең болады (7 + 10 = 17). Бірақ үшінші шыңның қазіргі таңбасы 9, ал 9 <17, сондықтан белгі өзгермейді.  2 шыңының тағы бір көршісі - 4 шыңы. Егер сіз оған 2-ден өтсеңіз, онда мұндай жолдың ұзындығы 22-ге тең болады (7 + 15 = 22). 22 <10000 болғандықтан, шың белгісін 4-тен 22-ге дейін қойыңыз.  2 шыңының барлық көршілері қаралды, біз оны барған деп белгілейміз.

6 слайд

Екінші қадам  Алгоритмнің 1-қадамы қайталанады. Қаралмаған шыңдардың қайсысын «ең жақын» екенін табыңыз. Бұл 7 деп белгіленген 2 шыңы.  Біз қайтадан таңдалған шыңның көршілерінің жапсырмаларын азайтуға тырысамыз, оларға екінші шыңнан өтуге тырысамыз. 2 шыңының көршілері - 1, 3 және 4 шыңдары.  1-ші төбеге кіріп үлгерген. 2 шыңының келесі көршісі - 3 шыңы, өйткені онда шыңдардың ең аз жапсырмасы барылмаған деп белгіленеді. Егер сіз оған 2 арқылы барсаңыз, онда мұндай жолдың ұзындығы 17-ге тең болады (7 + 10 = 17). Бірақ үшінші шыңның қазіргі таңбасы 9, ал 9 <17, сондықтан белгі өзгермейді.  2 шыңының тағы бір көршісі - 4 шыңы. Егер сіз оған 2-ден өтсеңіз, онда мұндай жолдың ұзындығы 22-ге тең болады (7 + 15 = 22). 22 <10000 болғандықтан, шың белгісін 4-тен 22-ге дейін қойыңыз.  2 шыңының барлық көршілері қаралды, біз оны барған деп белгілейміз.

Үшінші қадам  Алгоритм қадамын қайталаймыз, 3-шегін таңдаймыз, оны «өңдегеннен» кейін келесі нәтижелерге қол жеткіземіз.

7 слайд
Үшінші қадам  Алгоритм қадамын қайталаймыз, 3-шегін таңдаймыз, оны «өңдегеннен» кейін келесі нәтижелерге қол жеткіземіз.

7 слайд

Үшінші қадам  Алгоритм қадамын қайталаймыз, 3-шегін таңдаймыз, оны «өңдегеннен» кейін келесі нәтижелерге қол жеткіземіз.

Т өртінші Қадам

8 слайд
Т өртінші Қадам

8 слайд

Т өртінші Қадам

Бесінші Қадам

9 слайд
Бесінші Қадам

9 слайд

Бесінші Қадам

Алтыншы Қадам

10 слайд
Алтыншы Қадам

10 слайд

Алтыншы Қадам

Есеп немен аякталды ?  Осылайша, 1 шыңнан 5 шыңға дейінгі ең қысқа жол 1 - 3 - 6 - 5 шыңдары арқылы өтетін жол болады, өйтке

11 слайд
Есеп немен аякталды ?  Осылайша, 1 шыңнан 5 шыңға дейінгі ең қысқа жол 1 - 3 - 6 - 5 шыңдары арқылы өтетін жол болады, өйткені осылайша біз 20-ға тең минималды салмақ аламыз.  Ең қысқа жолдың шығуын қарастырайық. Біз әр шыңның жол ұзындығын білеміз, енді шыңдарды соңынан қарастырамыз. Соңғы шыңды қарастырайық (бұл жағдайда 5 шың), және ол байланысқан барлық шыңдар үшін сәйкес шеттің салмағын соңғы шыңның жол ұзындығынан шығару арқылы жол ұзындығын табамыз.  Сонымен, 5 шыңының ұзындығы 20-ға тең, ол 6 және 4 шыңдарымен байланысқан.  6 шыңы үшін біз салмақты 20 - 9 = 11 аламыз (сәйкес келеді).  4 шыңы үшін біз 20 - 6 = 14 салмағын аламыз (сәйкес келмеді).  Егер нәтижесінде біз қарастырылып отырған шыңның жол ұзындығымен сәйкес келетін мән алсақ (бұл жағдайда 6 шың), онда дәл осы жерден соңғы шыңға көшу жүзеге асырылды. Бұл шыңды біз қалаған жолмен белгілейміз.  Әрі қарай, біз 6-шыңға жеткен шекті анықтаймыз. Сонымен, біз басымызға жеткенше.  Егер осындай траверстің нәтижесінде қандай да бір қадамда бізде бірнеше шыңдар үшін бірдей мәндер болса, онда олардың кез-келгенін алуға болады - бірнеше жолдың ұзындығы бірдей болады.

11 слайд

Есеп немен аякталды ?  Осылайша, 1 шыңнан 5 шыңға дейінгі ең қысқа жол 1 - 3 - 6 - 5 шыңдары арқылы өтетін жол болады, өйткені осылайша біз 20-ға тең минималды салмақ аламыз.  Ең қысқа жолдың шығуын қарастырайық. Біз әр шыңның жол ұзындығын білеміз, енді шыңдарды соңынан қарастырамыз. Соңғы шыңды қарастырайық (бұл жағдайда 5 шың), және ол байланысқан барлық шыңдар үшін сәйкес шеттің салмағын соңғы шыңның жол ұзындығынан шығару арқылы жол ұзындығын табамыз.  Сонымен, 5 шыңының ұзындығы 20-ға тең, ол 6 және 4 шыңдарымен байланысқан.  6 шыңы үшін біз салмақты 20 - 9 = 11 аламыз (сәйкес келеді).  4 шыңы үшін біз 20 - 6 = 14 салмағын аламыз (сәйкес келмеді).  Егер нәтижесінде біз қарастырылып отырған шыңның жол ұзындығымен сәйкес келетін мән алсақ (бұл жағдайда 6 шың), онда дәл осы жерден соңғы шыңға көшу жүзеге асырылды. Бұл шыңды біз қалаған жолмен белгілейміз.  Әрі қарай, біз 6-шыңға жеткен шекті анықтаймыз. Сонымен, біз басымызға жеткенше.  Егер осындай траверстің нәтижесінде қандай да бір қадамда бізде бірнеше шыңдар үшін бірдей мәндер болса, онда олардың кез-келгенін алуға болады - бірнеше жолдың ұзындығы бірдей болады.

Дейкстра алгоритмінің іске асуы  Квадрат матрица графиктің салмағын сақтау үшін қолданылады. Жолдар мен бағандардың тақырып

12 слайд
Дейкстра алгоритмінің іске асуы  Квадрат матрица графиктің салмағын сақтау үшін қолданылады. Жолдар мен бағандардың тақырыптарында графиктің шыңдары бар. Ал графикалық доғалардың салмақтары кестенің ішкі ұяшықтарына орналастырылған. Графикте циклдар жоқ, сондықтан матрицаның негізгі диагоналында нөлдік мәндер бар.

12 слайд

Дейкстра алгоритмінің іске асуы  Квадрат матрица графиктің салмағын сақтау үшін қолданылады. Жолдар мен бағандардың тақырыптарында графиктің шыңдары бар. Ал графикалық доғалардың салмақтары кестенің ішкі ұяшықтарына орналастырылған. Графикте циклдар жоқ, сондықтан матрицаның негізгі диагоналында нөлдік мәндер бар.