Ketentuan Umum:
1. Tugas besar dikerjakan secara berkelompok dengan setiap kelompok beranggotakan 4-5
orang yang telah diacak. Perhatikan bahwa rombongan pada tugas besar ini berbeda
dengan rombongan praktikum. Harap cermati jadwal anda masing-masing agar tidak
tertukar. Daftar pembagian kelompok dapat dilihat di Microsoft Teams.
2. Terdapat dua soal tugas besar. Kelompok dengan nomor kelompok ganjil mengerjakan soal
1 (Travelling Salesman Problem) dan kelompok dengan nomor kelompok genap
mengerjakan soal 2 (Convex Hull Algorithms).
4. Setiap kelompok wajib melakukan asistensi setidaknya 1 kali untuk melaporkan progress
pengerjaan tugas kepada asisten kelompok dan meminta feedback dari asisten kelompok.
Asistensi tidak dijadwalkan dan Anda dipersilakan mengatur sendiri jadwal asistensi
dengan asisten kelompok Anda. Asistensi disarankan dilakukan dengan video conference
untuk mempermudah komunikasi.
5. Setiap kelompok diwajibkan menggunakan Git sebagai version control dari proyek tugas
besar ini. Kontribusi masing-masing anggota kelompok akan dinilai dari sejarah commit
dari repository tugas besar kelompok tersebut. Silakan ambil assignment berikut
https://classroom.github.com/a/ubkbB4F7, diskusikan dengan rekan sekelompok Anda
apakah repository kelompok telah dibuat atau belum untuk menghindari adanya repository
ganda untuk satu kelompok.
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 1
6. Setiap kelompok diwajibkan untuk mempresentasikan hasil pengerjaan tugas besar kepada
asisten praktikum. Presentasi setidaknya menjelaskan masalah yang diselesaikan,
membahas poin-poin penting pada bab 4 laporan praktikum, dan mendemonstrasikan
program. Jadwal presentasi dapat dilihat di Microsoft Teams.
7. Setiap file .c dan .h harus memiliki komentar header dengan hari dan tanggal merupakan
tanggal terakhir file tersebut dimodifikasi. Format komentar header dapat dilihat di bagian
lampiran dari dokumen ini.
8. Source code Anda harus dapat dikompilasi dengan perintah make main dan menghasilkan
executable dengan nama main. File executable harus memiliki ekstensi .exe jika dikompilasi
di komputer dengan sistem operasi Windows.
9. Anda diwajibkan mencantumkan referensi yang anda gunakan. Namun, plagiasi kode tetap
dilarang keras. Plagiasi kode di tugas besar akan menyebabkan semua anggota kelompok
untuk gugur praktikum.
Deliverables:
2. Source code: Setiap kelompok diwajibkan untuk mengumpulkan source code tugas besar di
repository Git kelompok. Link ke repository Git kelompok dimasukkan ke bagian lampiran
laporan praktikum.
3. Peer Review: Setiap anggota kelompok wajib mengisi peer review yang akan diberikan oleh
asisten kelompok setelah melakukan presentasi hasil pengerjaan tugas besar.
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 2
Soal 1 : Traveling Salesman Problem
Karena hilangnya avatar, negara api berhasil melakukan ekspansi dan menjadi kekuatan maritim yang
teritorinya merentang ke seluruh penjuru dunia. Untuk mempertahankan teritori tersebut, negara api tentu
saja membutuhkan logistik yang andal dan efisien. Sebagai pegawai negeri negara api, tim Anda
ditugaskan untuk menentukan rute pelayaran paling efisien yang dapat diikuti oleh sebuah kapal kargo
negara api sehingga negara api dapat menghemat biaya bahan bakar kapal kargo. Berikut adalah
visualisasi dari rute pelayaran yang akan Anda buat.
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 3
Negara api akan memberikan Anda daftar pelabuhan-pelabuhan yang perlu dikunjungi oleh sebuah kapal
kargo dalam bentuk file .csv. Anda diminta untuk membuat sebuah program yang dapat membaca file
tersebut dan menentukan rute paling pendek yang mengunjungi semua pelabuhan tersebut satu kali saja
lalu kembali lagi ke pelabuhan awal dimana kapal tersebut berangkat. Anda juga perlu menghitung jarak
total dari rute pelayaran tersebut. File yang diberikan oleh negara api (pelabuhan.csv) memiliki
format seperti pada teks berikut.
Pelabuhan,Lintang,Bujur
. . ., . . ., . . .
. . ., . . ., . . .
Perlu diingat bahwa kapal kargo standar negara api memiliki jarak tempuh maksimal 2500 km setelah
berangkat dari satu pelabuhan. Anda diminta untuk memberikan keterangan pelabuhan mana saja yang
tidak dapat dikunjungi karena memiliki jarak yang terlalu jauh dengan pelabuhan lainnya supaya negara
api dapat menjadwalkan pengiriman menggunakan kapal kargo jarak jauh. Contoh eksekusi program
adalah seperti pada potongan teks berikut.
Masukkan file pelabuhan: pelabuhan.csv
Catatan:
● Contoh eksekusi program pada naskah soal ini tidak dijamin benar
● Dunia avatar berbentuk bulat, gunakan rumus seperti rumus haversine untuk menghitung jarak.
● Program yang Anda buat harus memberikan output yang valid, membutuhkan waktu sesedikit
mungkin (kompleksitas waktu serendah mungkin), dan membutuhkan ruang sesedikit mungkin
(kompleksitas ruang serendah mungkin).
● Format input dan output program dibebaskan namun output program harus mencantumkan rute
pelayaran, pelabuhan-pelabuhan yang tidak dapat dijangkau oleh kapal kargo standar negara api,
serta jarak total dari rute pelayaran.
● Autograder tidak akan digunakan pada tugas ini, keluaran program akan dicek secara manual oleh
asisten kelompok.
● Silahkan bertanya ke asisten kelompok dan buat asumsi-asumsi sendiri untuk hal-hal yang tidak
dispesifikasikan pada naskah soal ini.
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 4
Soal 2 : Convex Hull Algorithms
Karena hilangnya avatar, negara api berhasil melakukan ekspansi dan menjadi kekuatan maritim yang
teritorinya merentang ke seluruh penjuru dunia. Untuk mempertahankan teritori tersebut, negara api tentu
saja memiliki serangkaian markas militer yang dapat menjaga perbatasan tersebut. Sebagai pegawai
negeri negara api, tim Anda ditugaskan menentukan perbatasan efektif negara api berdasarkan
markas-markas militer yang sudah ada. Berikut adalah visualisasi dari perbatasan efektif negara api yang
akan Anda buat.
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 5
Negara api akan memberikan Anda daftar markas militer dalam bentuk file .csv. Anda diminta untuk
membuat sebuah program yang dapat menentukan perbatasan efektif negara api yang ditarik dari satu
markas ke markas lainnya. Karena negara api ingin memiliki teritori yang seluas-luasnya, perbatasan
efektif yang Anda buat harus mengelilingi sebanyak mungkin markas militer negara api. Perbatasan dapat
disebut efektif jika setiap segmen garis pada perbatasan memiliki panjang tidak lebih 2500 km sehingga
kapal-kapal negara api dapat melakukan patroli di perbatasan secara efektif. Anda juga perlu menghitung
panjang dari perbatasan efektif negara api. File yang diberikan oleh negara api (markas.csv) memiliki
format seperti pada teks berikut
Pelabuhan,Lintang,Bujur
. . ., . . ., . . .
. . ., . . ., . . .
Jika ada markas-markas yang berada di luar perbatasan efektif, Anda perlu melaporkan hal tersebut
sehingga negara api dapat mempertimbangkan pembangunan markas militer tambahan di daerah tersebut.
Contoh eksekusi program adalah seperti pada potongan teks berikut.
Masukkan file markas: markas.csv
Catatan:
● Contoh eksekusi program pada naskah soal ini tidak dijamin benar
● Dunia avatar berbentuk bulat, gunakan rumus seperti rumus haversine untuk menghitung jarak.
● Program yang Anda buat harus memberikan output yang valid, membutuhkan waktu sesedikit
mungkin (kompleksitas waktu serendah mungkin), dan membutuhkan ruang sesedikit mungkin
(kompleksitas ruang serendah mungkin).
● Format input dan output program dibebaskan namun output program harus mencantumkan
markas-markas pada perbatasan efektif, markas-markas yang berada di luar perbatasan efektif,
serta keliling dari perbatasan efektif.
● Autograder tidak akan digunakan pada tugas ini, keluaran program akan dicek secara manual oleh
asisten kelompok.
● Silahkan bertanya ke asisten kelompok dan buat asumsi-asumsi sendiri untuk hal-hal yang tidak
dispesifikasikan pada naskah soal ini.
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 6
Lampiran
Informasi kontak asisten praktikum
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 7
Format komentar header setiap file .c dan .h
Pelabuhan,Lintang,Bujur
Kota Ba Sing Se,25.0330,121.5654
Kota Omashu,10.3157,123.8854
Desa Pulau Kyoshi,10.4744,98.9305
Kota Gaoling,-0.9116,119.9004
Desa Senlin,23.5565,117.6227
Desa Makapu Oahu,21.3394,157.7147
Desa Hira'a Tahiti,15.2549,145.8150
Kota Chin Manila,14.5995,120.9842
Desa Tu Zin Cebu,10.3157,123.8854
Kota Saigon,10.8231,106.6297
Kota Kyoshi Bangkok,13.7563,100.5018
Kota Republik Singapore,1.3521,103.8198
Kota Jakarta Kerajaan Bumi,-6.2088,106.8456
Kota Surabaya Kerajaan Bumi,-7.2575,112.7521
Kota Davao Kerajaan Bumi,7.1907,125.4553
Kota Puerto Princesa Palawan,9.9672,118.7859
Kota Kuching Borneo,1.5497,110.3631
Kota Phnom Penh Kerajaan Bumi,11.5564,104.9282
Desa Full Moon Bay Kerajaan Bumi,10.6093,103.5297
Desa Pulau Ember Langkawi,6.3500,99.8000
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 8
Isi file markas.csv
Markas,Lintang,Bujur
Markas Ba Sing Se,25.0330,121.5654
Markas Omashu,10.3157,123.8854
Markas Pulau Kyoshi,10.4744,98.9305
Markas Gaoling,-0.9116,119.9004
Markas Senlin,23.5565,117.6227
Markas Makapu Oahu,21.3394,157.7147
Markas Hira'a Tahiti,15.2549,145.8150
Markas Chin Manila,14.5995,120.9842
Markas Tu Zin Cebu,10.3157,123.8854
Markas Saigon,10.8231,106.6297
Markas Kyoshi Bangkok,13.7563,100.5018
Markas Republik Singapore,1.3521,103.8198
Markas Jakarta Kerajaan Bumi,-6.2088,106.8456
Markas Surabaya Kerajaan Bumi,-7.2575,112.7521
Markas Davao Kerajaan Bumi,7.1907,125.4553
Markas Puerto Princesa Palawan,9.9672,118.7859
Markas Kuching Borneo,1.5497,110.3631
Markas Phnom Penh Kerajaan Bumi,11.5564,104.9282
Markas Full Moon Bay Kerajaan Bumi,10.6093,103.5297
Markas Pulau Ember Langkawi,6.3500,99.8000
EL2208 Praktikum Pemecahan Masalah dengan C - Laboratorium Dasar Teknik Elektro - STEI ITB | 9