{"id":21432421,"url":"https://github.com/mikeleo03/shortest-path-problem-solver","last_synced_at":"2025-03-16T22:35:20.095Z","repository":{"id":168964556,"uuid":"623931612","full_name":"mikeleo03/Shortest-Path-Problem-Solver","owner":"mikeleo03","description":"Tugas Kecil 3 Strategi Algoritma IF2211 - Shortest Path Problem Solver using UCS and A* Algorithm","archived":false,"fork":false,"pushed_at":"2023-04-12T12:23:52.000Z","size":18437,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T08:43:09.063Z","etag":null,"topics":["astar-algorithm","shortest-path-algorithm","ucs-algorithm","web-based"],"latest_commit_sha":null,"homepage":"https://shortestpath-finder.netlify.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mikeleo03.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-05T11:49:11.000Z","updated_at":"2024-04-07T04:45:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"062b0da6-ab9b-4397-86cb-d8a9910b83b6","html_url":"https://github.com/mikeleo03/Shortest-Path-Problem-Solver","commit_stats":null,"previous_names":["mikeleo03/tucil3_13521070_13521108","mikeleo03/shortest-path-problem-solver"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FShortest-Path-Problem-Solver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FShortest-Path-Problem-Solver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FShortest-Path-Problem-Solver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeleo03%2FShortest-Path-Problem-Solver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikeleo03","download_url":"https://codeload.github.com/mikeleo03/Shortest-Path-Problem-Solver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243945321,"owners_count":20372890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astar-algorithm","shortest-path-algorithm","ucs-algorithm","web-based"],"created_at":"2024-11-22T23:18:29.717Z","updated_at":"2025-03-16T22:35:20.075Z","avatar_url":"https://github.com/mikeleo03.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shortest Path Problem Solver using UCS and A* Algorithm\n\u003e *Source Code* ini dibuat untuk memenuhi Tugas Kecil 3 Strategi Algoritma yaitu mengimplementasikan\n\u003e Algoritma UCS dan A* untuk Menentukan Lintasan Terpendek\n\n## Daftar Isi\n- [Author](#author)\n- [Deskripsi Singkat](#deskripsi-singkat)\n- [Sistematika File](#sistematika-file)\n- [Requirements](#requirements)\n- [Cara Mengkompilasi dan Menjalankan Program](#cara-mengkompilasi-dan-menjalankan-program)\n- [Format Masukan](#format-masukan)\n- [Cara Mengoperasikan Program](#cara-mengoperasikan-program)\n- [Daftar Fitur](#daftar-fitur)\n- [Project Status](#project-status)\n- [Screenshots](#screenshots)\n\n## Author\n| NIM      | Nama                        | Github Profile                            |\n| -------- | ----------------------------|-------------------------------------------|\n| 13521070 | Akmal Mahardika Nurwahyu P. | [akmaldika](https://github.com/akmaldika) |\n| 13521108 | Michael Leon Putra Widhi    | [mikeleo03](https://github.com/mikeleo03) |\n\n## Deskripsi Singkat\nPada Tugas Kecil kali ini, diimplementasikan sebuah program pencari jalur terpendek antara dua buah simpul pada peta menggunakan Algoritma *Uniform Cost Search* (UCS) dan Algoritma A*. Program akan menerima masukan berupa matriks ketetanggaan yang menyatakan nilai bobot yang menghubungkan dua buah simpul terkait untuk kemudian diterapkan kedua algoritma diatas dan dibandingkan hasilnya. Pencarian jalur terpendek menggunakan algoritma A* akan memiliki hasil yang sama dengan pencarian jalur terpendek menggunakan algoritma UCS jika diterapkan metode heuristik yang dapat diterima (*admissible*), oleh sebab itu, pada pogram yang dibuat, digunakan sebuah metode heuristik yaitu jarak garis lurus (*straight-line distance*) antara dua buah simpul awal dan tujuan.\n\n## Sistematika File\n```bash\n.\n├─── doc\n├─── src\n│   ├─── modules\n│   │   ├─── Algorithm.js\n│   │   ├─── Path.js\n│   │   └─── PrioQueue.js\n│   ├─── .gitignore\n│   ├─── index.html\n│   ├─── main.js\n│   ├─── package-lock.json\n│   ├─── package.json    \n│   └─── style.css\n├─── test\n└─── README.md\n```\n\n## Requirements\n- Leaflet.js v.1.9.3\n- node.js (Pembuat menggunakan v.18.12.1)\n- npm (Pembuat menggunakan v.8.19.2)\n\n## Cara Mengkompilasi dan Menjalankan Program\nProgram yang diimplementasikan merupakan sebuah *website* yang telah dilakukan *deployment* pada tautan berikut\n```bash\n\u003e\u003e\u003e shortestpath-finder.netlify.app\n```\nAkan tetapi program tetap dapat dikompilasi dan dijalankan dengan prosedur sebagai berikut\n1. Lakukan *clone repository* melalui terminal dengan *command* berikut\n   ``` bash\n    $ git clone https://github.com/mikeleo03/Tucil3_13521070_13521108.git\n   ```\n2. Lakukan pemindahan direktori ke `src` dengan *command* berikut\n   ``` bash\n    $ cd src\n   ```\n3. Lakukan kompilasi dan unduh beberapa modul yang diperlukan dengan menjalankan *command* berikut\n   ``` bash\n    $ npm install\n    $ npm run dev\n   ```\n4. Jika kompilasi berhasil, maka akan muncul sebuah tautan pada terminal. Bukalah tautan tersebut dan Anda akan langsung dihadapkan pada laman utama *website* yang telah dibuat.\n\n## Format Masukan\nMasukan yang diterima adalah masukan dengan ekstensi .json Berikut adalah contoh format data masukan yang diterima oleh program\n```bash\n{  \"posList\":[\n   {\"id\":\"1\",\"nama\":\"simpul1\",\"lintang\":-6.893212002931665,\"bujur\":107.61044561862947},\n   {\"id\":\"2\",\"nama\":\"simpul2\",\"lintang\":-6.893812697949787,\"bujur\":107.61305809020998},\n   {\"id\":\"3\",\"nama\":\"simpul3\",\"lintang\":-6.893803136408218,\"bujur\":107.60839104652405}],\n   \n   \"adjMatrix\":[\n   [0,0.299,0.224],\n   [0.299,0,-1],\n   [0.224,-1,0]]\n}\n```\nFile yang menjadi masukan kasus uji harus terdiri atas dua buah komponen utama, yaitu :\n1. posList, merupakan sebuah larik berisi himpunan informasi terkait simpul masukan yang akan memudahkan proses penggambaran dan penjelasan pada peta. Himpunan informasi tersebut terdiri atas hal berikut (tekan tombol segitiga di bagian kiri setiap atribut informasi untuk melihat detil masukan).\n   \u003cdetails\u003e\n      \u003csummary\u003e id\u003c/summary\u003e\n      \u003cp\u003eSebuah string numerik yang merupakan identifikator dari titik masukan.\u003c/p\u003e\n   \u003c/details\u003e\n   \u003cdetails\u003e\n      \u003csummary\u003e nama\u003c/summary\u003e\n      \u003cp\u003eSebuah string yang menyatakan nama simpul masukan pada id yang bersangkutan.\u003c/p\u003e\n   \u003c/details\u003e\n   \u003cdetails\u003e\n      \u003csummary\u003e lintang\u003c/summary\u003e\n      \u003cp\u003eSebuah float yang menyatakan posisi lintang dari sebuah simpul masukan dengan id terkait\u003c/p\u003e\n   \u003c/details\u003e\n   \u003cdetails\u003e\n      \u003csummary\u003e bujur\u003c/summary\u003e\n      \u003cp\u003eSebuah float yang menyatakan posisi bujur dari sebuah simpul masukan dengan id terkait.\u003c/p\u003e\n   \u003c/details\u003e\n2. adjMatrix, merupakan sebuah senarai multidimensi yang merupakan matriks ketetanggaan yang valid (memenuhi semua kriteria yang dijelaskan pada poin sebelumnya). Gunakan  nilai -1 untuk kedua simpul yang tidak saling terhubung dan nilai 0 untuk simpul yang sama dengan alasan bahwa tidak diperlukannya nilai bobot yang menyatakan jarak dari simpul menyatakan sebuah titik yang berada pada posisi yang sama.\n\nPenjelasan lebih lanjut mengenai masukan terdapat pada dokumentasi laporan yang dapat diakses pada [tautan ini](doc/screenshots.PNG)\n\n## Cara Mengoperasikan Program\n1. Pada bagian awal akan muncul tampilan muka dari *website* yang telah dibuat\n2. Pengguna dapat memberikan tiga jenis masukan pada program\n   1. Masukan dari *file*, yaitu dengan menekan tombol `choose file` pada program. Pastikan ekstensi dan format masukan sudah sesuai dengan yang dijelaskan pada [format masukan](#format-masukan).\n   2. Masukan langsung dari pengguna, yaitu dengan melakukan tekan ganda pada titik yang akan dianalisis. Sesaat kemudian akan muncul sebuah *pop-up* untuk menanyakan nama simpul. Berikan masukan nama simpul dan tekan `OK`, maka akan muncul sebuah simpul pada peta sesuai dengan nama masukan dan daftar pilihan simpul yang dapat dianalisis.\n   3. Gabungan dari metode masukan a dan b diatas, yaitu dengan menerima masukan dari *file* dilanjutkan dengan menambahkan simpul melalui tekan ganda.\n3. Pilih dua buah simpul yang akan dianalisis jarak lintasan terpendeknya di kolom pilihan `Initial Node` dan `Final Node` pada bagian Shortest Path Searching.\n4. Pilih metode pencarian jarak. Jika pengguna memilih metode UCS, maka tekan tombol `Process UCS`, sebaliknya jika pengguna memilih metode A*, maka tekan tombol `Process A*`.\n5. Akan ada dua kemungkinan hasil proses analisis\n   1. Simpul asal dan tujuan terhubung, maka akan muncul jenis algoritma dan hasil pencarian jalur terpendek dengan jalur tersebut pada bagian bawah peta.\n   2. Simpul asal dan tujuan tidak terhubung (baik secara langsung maupun melalui simpul lain), maka akan muncul *pop-up* yang menyatakan bahwa kedua simpul tidak terhubung dan akan muncul tulisan \"Path not found!\" pada bagian bawah peta.\n   \u003cbr\u003e Jika salah satu hasil diatas muncul, maka proses analisis jalur terpendek telah selesai dilaksanakan.\n\n## Daftar Fitur\nBerikut adalah daftar fitur yang berhasil diimplementasikan dan beberapa fitur tambahan diluar spesifikasi\n1. Menerima masukan graf yang dinyatakan dalam matriks ketetangaan.\n2. Menambahkan simpul secara manual dengan melakukan tekan ganda [Bonus]\n3. Menghapus simpul secara manual dari peta [Tambahan]\n4. Menghitung lintasan terpendek dengan algoritma UCS\n5. Menghitung lintasan terpendek dengan algoritma A*\n6. Fitur peta dengan API untuk melihat tampilan jarak [Bonus]\n7. Menambahkan simpul secara manual pada bagian `Insert Relation` [Tambahan]\n8. Melihat daftar jarak antar simpul yang terbaca pada ketiga tipe masukan [Tambahan]\n9. Melakukan pergeseran posisi simpul dan *website* akan melakukan pembaharuan data secara otomatis [Tambahan]\n10. Menyimpan konfigurasi peta yang mengalami perubahan dari berbagai jenis tipe masukan dengan `Save Current Map` [Tambahan]\n\n## Project Status\nStatus : *Completed*\n| Poin  | Ya | Tidak |\n|---|---|---|\n| Program dapat menerima input graf | ✓ |   |\n| Program dapat menghitung lintasan terpendek dengan UCS | ✓ |   |\n| Program dapat menghitung lintasan terpendek dengan A* | ✓ |   |\n| Program dapat menampilkan lintasan terpendek serta jaraknya | ✓ |  |\n| Bonus: Program dapat menerima input peta dengan Google Map API dan menampilkan peta serta lintasan terpendek pada peta | ✓ |  |\n\n## Screenshots\n![screenshots](img/screenshots.PNG)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikeleo03%2Fshortest-path-problem-solver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikeleo03%2Fshortest-path-problem-solver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikeleo03%2Fshortest-path-problem-solver/lists"}