Author: Jericho Russel Sebastian (13521107)
WowBestMatch merupakan program pencari pasangan titik terdekat (closest pair) dari sekumpulan titik n-dimensi acak atau diberikan. Program ini dibuat sebagai pemenuhan Tugas Kecil 2 mata kuliah IF2211 Strategi Algoritma.
- Make, GNU G++, Python, PyInstaller, Matplotlib (untuk kompilasi)
- Make, Python, Matplotlib (opsional untuk menjalankan)
Program terbagi menjadi dua bagian, yaitu:
-
WowBM (C++): Mencari pasangan titik terdekat dari sekumpulan titik n-dimensi:
- Jika tidak diberikan argumen, program akan menerima masukan banyak titik dan nilai n.
- Jika diberikan argumen path ke file CSV, program akan membaca file dan membentuk daftar titik sesuai dengan isi file.
Program memberikan beberapa keluaran, yaitu:
- Keluaran ke layar berupa pasangan titik terdekat beserta dengan jaraknya, berikut banyak operasi perhitungan jarak dan durasi total.
- Keluaran indeks pasangan titik terdekat beserta dengan daftar titik ke file
result.txt
, untuk dibaca oleh WowPlot.
-
WowPlot (Python): Menerima daftar titik dalam file
result.txt
dan menggambarkan semua titik dalam bidang 3D:- Variasi 3 komponen pertama titik digambarkan sebagai perbedaan posisi dalam bidang 3D.
- Variasi komponen ke-4 digambarkan sebagai perbedaan ukuran.
- Variasi komponen ke-5 digambarkan sebagai perbedaan warna.
- Variasi komponen di atas dimensi 5 tidak digambarkan.
Pasangan titik terdekat yang ditemukan oleh WowBM digambarkan dalam warna merah.
Jalankan perintah berikut pada root folder untuk mengkompilasi program (hasil wowbm.exe
dan wowplot.exe
dalam folder bin
):
make build-all
Jalankan perintah berikut pada root folder untuk mengkompilasi versi debug dari program (hasil wowbm_debug.exe
dan wowplot.exe
dalam folder bin
):
make build-debug
Untuk menjalankan program, jalankan perintah berikut pada root folder:
make run
atau, jika Python dan Matplotlib tersedia:
make run-nopybin
Jika Make tidak tersedia, dapat menjalankan run.bat
(Windows) atau run.sh
(Linux) yang tersedia pada root folder.
Program dapat menerima masukan kumpulan titik dari file CSV. Jalankan perintah berikut untuk memberikan masukan file:
./bin/wowbm.exe <path/to/file.csv>
./bin/wowplot.exe
Untuk menjalankan versi debug dari program (melakukan perbandingan terhadap algoritma brute force), jalankan perintah berikut pada root folder:
make debug
atau, jika Python dan Matplotlib tersedia:
make debug-nopybin
Jika Make tidak tersedia, dapat menjalankan debug.bat
(Windows) atau debug.sh
(Linux) yang tersedia pada root folder.
Program dapat menerima masukan kumpulan titik dari file CSV. Jalankan perintah berikut untuk memberikan masukan file:
./bin/wowbm_debug.exe <path/to/file.csv>
./bin/wowplot.exe