Topological sort

Biz o’tgan graph masalalarida asosan undirected graph’larni ko’rib chiqdik. Aslida undirected graph directed graph’dan kodda ifodalanganda bor yo’g’i graph’dagi barcha vertex’larning ikki tomonlama (ikki yo’nalishli) bog’langani bilan farq qiladi. Shuning uchun undirected graph masalalaridagi yechimlar yoki algoritmlar direct graph uchun ham mos kelishi mumkin.

Kenigsbergning yetti ko’prigi

Kenigsberg (Königsberg, hozirgi Kaliningrad) shahridagi yetti ko’prikni qanday qilib bir ko’prikga ikki marta chiqmasdan bosib o’tish – qadimiy matematik masalalardan biri bo’lib, birinchi marta 1736-yilda Leonard Eyler tomonidan yechilgan. Eyler har bir ko’prikdan faqat bir marta foydalanib barcha ko’priklarni aylanib chiqish imkonsizligini isbotlab bergan.

Graph’da bog’langan komponentlar

Connected components

Bog’langan komponentlar (Connected components, CC) deb graphdagi bir-biriga tog’ridan to’g’ri yoki oradagi vertex’lar orqali bog’langan komponentlar to’plamiga aytiladi. Amaliyotda agar ikki vertex orasida path bo’lsa, biz ularni bog’langan deb ayta olamiz.

Breadth first search algoritmi

Breadth first search (BFS) algoritmi graph’ning barcha vertex’larini ko’rib chiqishning yana bir yo’li bo’lib, u rekursiv algoritm hisoblanmaydi. BFS Depth first search algoritmidan farqli ravishda queue ishlatadi (DFS – stack’dan foydalanardi).

Depth first search algoritmi

Depth first search (DFS) algoritmi oson klassik graph algoritmlaridan biri bo’lib, u rekursiya ichida graph’dagi barcha vertex’larni tekshirib chiqishga yordam beradi. Aslida biz bu algoritmdan binary search tree’dagi barcha ma’lumotlarni ko’rib chiqish uchun foydalanib, traverse() funksiyasini yozganmiz.

Graph ma’lumotlar tuzilmasi

Graph

Biz chiziqli bo’lmagan ma’lumotlar tuzilmasini o’rganishni boshlaganimizda, ularning bazaviy xarakteristikasini ko’rib chiqqandik: tuzilmadagi ma’lumotlar qandaydir tartibga ega emas (hech bo’lmaganda sanoq tartibiga ega emas).