📘
Grokking-Algorithms book
PostgreSQL
  • Content
  • Introduction to Algorithms
    • Introduction
    • Binary Search
    • Big O notation
    • Recap
  • Selection sort
    • How memory works
    • Arrays and linked lists
    • Selection sort
    • Recap
  • Recursion
    • Recursion
    • Base case and recursive case
    • The stack
    • Recap
  • Quicksort
    • Divide & conquer
    • Quicksort
    • Big O notation revisited
    • Recap
  • Hash tables
    • Hash functions
    • Use cases
    • Collisions
    • Performance
    • Recap
  • Breadth-first search
    • Introduction to graph
    • What is a graph
    • Breadth-first search
    • Implementing the graph
    • Implementing the algorithm
    • Recap
  • Dijkstra's algorithm
    • Working with Dijkstra's algorithm
    • Terminology
    • Trading for a piano
    • Negative-weight edges
    • Implementation
    • Recap
  • Greedy Algorithms
    • The classroom scheduling problem
    • The knapsack problem
    • The set-covering problem
    • NP-complete problems
    • Traveling salesperson, step by step
    • Recap
  • Dynamic programming
    • The knapsack problem
    • Knapsack problem FAQ
    • Longest common substring
    • Recap
  • K-nearest neighbors
    • Classifying oranges vs. grapefruit
    • Building a recommendations system
    • Introduction to machine learning
    • Recap
  • Where to go next
    • Trees
    • Inverted indexes
    • The Fourier transform
    • Parallel algorithms
    • MapReduce
    • Bloom filters and HyperLogLog
    • The SHA algorithms
    • Locality-sensitive hashing
    • Diffie-Hellman key exchange
    • Linear programming
    • Epilogue
  • Answers to exercises
    • Chapter 1
    • Chapter 2
    • Chapter 3
    • Chapter 4
    • Chapter 5
    • Chapter 6
    • Chapter 7
    • Chapter 8
    • Chapter 9
    • Chapter 10
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. Dijkstra's algorithm

Terminology

PreviousWorking with Dijkstra's algorithmNextTrading for a piano

Last updated 1 year ago

Was this helpful?

Men sizga Dijkstra algoritmining yana bir nechta misollarini ko'rsatmoqchiman. Lekin avval ba'zi atamalarga aniqlik kiritib o'tsam.

Dijkstra algoritmi bilan ishlaganingizda, grafikning har bir chetida u bilan bog'langan raqam mavjud. Bu og'irliklar deb ataladi.

Og'irliklari bo'lgan grafik vaznli grafik deb ataladi. Og'irliklari bo'lmagan grafik og'irliksiz grafik deyiladi.

Og'irlanmagan grafikdagi eng qisqa yo'lni hisoblash uchun birinchi navbatda kenglik qidiruvidan foydalaning. Og'irlangan grafikdagi eng qisqa yo'lni hisoblash uchun Dijkstra algoritmidan foydalaning. Grafiklarda tsikllar ham bo'lishi mumkin. Tsikl shunday ko'rinadi.

Bu siz tugundan boshlashingiz, aylanib o'tishingiz va xuddi shu tugunda tugashingiz mumkinligini anglatadi. Aytaylik, siz ushbu grafikda tsikli bo'lgan eng qisqa yo'lni topishga harakat qilyapsiz.

Tsiklga amal qilish mantiqiy bo'ladimi? Xo'sh, siz tsikldan qochadigan yo'ldan foydalanishingiz mumkin.

Yoki siz tsiklni kuzatishingiz mumkin.

Siz har qanday holatda ham A tuguniga kelasiz, lekin tsikl ko'proq og'irlik qo'shadi. Agar xohlasangiz, tsiklni ikki marta kuzatishingiz mumkin.

Ammo har safar tsiklni kuzatib borganingizda, siz umumiy vaznga faqat 8 qo'shasiz. Shunday qilib, tsiklni kuzatish sizga hech qachon eng qisqa yo'lni bermaydi.

Va nihoyat, 6-bobdagi yo'naltirilgan va yo'naltirilmagan grafiklar haqidagi suhbatimizni eslaysizmi?

Yo'naltirilmagan grafik ikkala tugun bir-biriga ishora qilishini anglatadi. Bu tsikl!

Yo'naltirilmagan grafik bilan har bir chekka yana bir tsikl qo'shadi. Dijkstra algoritmi faqat qisqacha DAG deb ataladigan yo'naltirilgan asiklik grafiklar bilan ishlaydi.

weights
graphs
cycle
cycle in graph
cycle
cycle
total weight
graphs
item