๐Kahn's Algorithm
Kahnโs Algorithm adalah algoritma yang digunakan untuk melakukan topological sort pada graf berarah tanpa siklus (DAG) yang diperkenalkan oleh Arthur B. Kahn pada tahun 1962.
๐ฏ Tujuan Utama
Menyusun simpul-simpul dalam urutan sedemikian rupa sehingga jika ada edge dari simpul U ke simpul V, maka U muncul sebelum V dalam urutan hasil.
๐ Aplikasi Praktis
๐ Penjadwalan tugas dengan dependensi ๐ป Kompilasi kode dan build system ๐๏ธ Sistem build untuk proyek software ๐ Dependency management antar modul ๐ Project management dan task scheduling
๐งฉ Konsep Utama
๐ Graf Berarah (Directed Graph) Directed Acyclic Graph (DAG) adalah graf berarah tanpa siklus yang digunakan untuk memodelkan hubungan dependensi atau urutan tugas.
โจ Karakteristik DAG:
- ๐ Berarah: Setiap edge memiliki arah tertentu
- ๐ซ Tanpa Siklus: Tidak ada jalur yang kembali ke node asal
- ๐ Hierarkis: Menunjukkan struktur ketergantungan
- โก Efisien: Representasi kompleks tanpa perulangan
๐ Acyclic (Tanpa Siklus) Acyclic berarti graf tidak boleh memiliki rangkaian edge yang membentuk loop (jalur berulang ke node yang sama).
- โ Topological sort hanya mungkin pada graf tanpa siklus
- โ Jika ada siklus, node akan saling bergantung secara circular
- ๐ Tidak bisa diurutkan secara linier jika terdapat siklus
๐ฅ In-degree In-degree adalah jumlah edge yang masuk ke suatu node, mengukur seberapa banyak dependensi yang dimiliki node tersebut. Fungsi dalam Kahnโs Algorithm:
- ๐ Mengukur dependensi node
- ๐ฏ Menentukan urutan eksekusi
- ๐ Mendeteksi siklus dengan memantau node yang tidak pernah mencapai in-degree = 0
๐ Topological Sort Topological Sort adalah metode pengurutan node dalam DAG berdasarkan ketergantungan hierarkis.
๐ Langkah Detail
- Step 1: ๐ข Hitung In-degree
Hitung jumlah edge masuk untuk setiap node
Inisialisasi counter untuk setiap node
- Step 2: ๐ฅ Inisialisasi Queue
Masukkan semua node dengan in-degree = 0 ke dalam queue
Node-node ini tidak memiliki dependensi
- Step 3: ๐ Proses Iteratif Selama queue tidak kosong:
๐ฏ Keluarkan node dari queue (u)
โ Masukkan u ke dalam hasil topological sort
๐ Untuk setiap tetangga v dari u:
โ Kurangi in-degree[v] sebanyak 1
๐ Jika in-degree[v] = 0, masukkan v ke queue
- Step 4: โ Validasi Hasil
๐ Jika jumlah node dalam hasil โ jumlah node di graf
โ ๏ธ Maka graf memiliki siklus (tidak valid untuk topological sort)
๐ Aplikasi Dunia Nyata
- ๐ Project Management: Task scheduling dengan dependensi
- ๐ป Software Development: Build systems dan compilation order
- ๐ Academic: Course prerequisite planning
- ๐๏ธ Manufacturing: Production pipeline optimization
- ๐ System Design: Module dependency resolution