Post

๐Ÿ”„Kahn's Algorithm

๐Ÿ”„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
This post is licensed under CC BY 4.0 by the author.