Final Project Desain & Analisis Algoritma (DAA)
Aplikasi GUI berbasis Python ini dirancang untuk memvisualisasikan dan membandingkan performa dua algoritma pencarian klasik, Breadth-First Search (BFS) dan Depth-First Search (DFS), dalam menyelesaikan permainan 8-Puzzle.
Proyek ini mendemonstrasikan bagaimana algoritma pencarian bekerja menyelesaikan masalah puzzle angka. Dibangun dengan antarmuka Tkinter, aplikasi ini memungkinkan pengguna untuk:
- Menentukan jumlah pengujian (trials).
- Menjalankan simulasi otomatis pada puzzle acak yang sama.
- Membandingkan efisiensi algoritma berdasarkan:
- Langkah (Cost): Jumlah pergeseran ubin.
- Simpul (Nodes): Jumlah state yang diperiksa.
- Waktu: Kecepatan menemukan solusi.
- Antarmuka Grafis (GUI): Visualisasi papan puzzle 3x3 yang interaktif dan mudah dipahami.
- Perbandingan Head-to-Head: BFS dan DFS diuji pada konfigurasi puzzle acak yang sama persis untuk keadilan data.
- Jaminan Solusi (Solvable): Algoritma pembangkit puzzle menjamin setiap puzzle yang dibuat pasti bisa diselesaikan.
- Log & Statistik: Menampilkan log detail per pengujian dan ringkasan rata-rata kinerja di akhir proses.
Kode ini dikembangkan menggunakan Python 3.10.
Library yang digunakan adalah modul bawaan Python (Standard Library), sehingga tidak perlu instalasi pip tambahan:
tkinter(GUI)collections(Struktur data Deque)random,time(Utilitas)
Catatan untuk pengguna Linux: Jika mengalami error
ModuleNotFoundError: No module named '_tkinter', silakan install paketpython3-tkmelalui terminal.
-
Clone Repository (atau download zip):
git clone [https://github.com/username-anda/nama-repo-anda.git](https://github.com/username-anda/nama-repo-anda.git) cd nama-repo-anda -
Jalankan Aplikasi: Buka terminal di dalam folder proyek dan ketik:
python gui.py
-
Penggunaan:
- Masukkan jumlah pengujian pada kolom input (Default: 10).
- Klik tombol "Jalankan Perbandingan".
- Tunggu proses selesai dan analisis hasilnya di kolom Log.
- Konsep: Mencari solusi secara melebar (layer per layer). Mengecek semua kemungkinan 1 langkah, lalu 2 langkah, dst.
- Kelebihan: Dijamin menemukan solusi terpendek (optimal).
- Kekurangan: Boros memori karena menyimpan banyak state antrian.
- Struktur Data: Queue (Antrian) - First In, First Out (FIFO).
- Konsep: Mencari solusi secara mendalam. Mencoba satu jalur terus menerus hingga mentok atau ketemu solusi, baru mundur (backtrack).
- Kelebihan: Implementasi sederhana dan hemat memori pada kasus tertentu.
- Kekurangan: Tidak menjamin solusi terpendek. Jalur solusi bisa sangat panjang dan berputar-putar.
- Struktur Data: Stack (Tumpukan) - Last In, First Out (LIFO).
| Nama File | Deskripsi |
|---|---|
gui.py |
Main Program. Menjalankan GUI Tkinter, visualisasi grid, dan mengatur loop pengujian. |
puzzle_solver.py |
Logic Core. Berisi implementasi fungsi bfs(), dfs(), get_neighbors(), dan class Node. |
π¨βπ» Author
- Dibuat oleh: rfrz
- Tugas Akhir Mata Kuliah Desain & Analisis Algoritma.