Anda di halaman 1dari 22

LAPORAN PRAKTIKUM

PEMROGRAMAN KOMPETITIVE

SOLUSI ALGORITMA PADA MASALAH DYNAMIC PROGRAMING,


STRUKTUR DATA DASAR, GRAFF, STRUKTUR DATA NON LINIER,
DAN GEOMETRI MENGGUNAKAN PRINSIP PEMROGRAMAN
KOMPETITIVE

DISUSUN OLEH:

Muhammad Hafiz (191055201056)


Dimas Alfiatno (211055201008)
Lorensa Siallagan (191055201183)
Putri Isdayanti (191055201035)
Mahfutzhi (201055201101)

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK

UNIVERSITAS IBNU SINA

2022
HALAMAN PENGESAHAN

LAPORAN PRAKTIKUM PEMROGRAMAN KOMPETITIF

JUDUL :

SOLUSI ALGORITMA PADA MASALAH DYNAMIC PROGRAMING,


STRUKTUR DATA DASAR, GRAFF, STRUKTUR DATA NON LINIER, DAN
GEOMETRI MENGGUNAKAN PRINSIP PEMROGRAMAN KOMPETITIVE

Disusun Oleh:

Muhammad Hafiz (191055201056)


Dimas Alfiatno (211055201008)
Lorensa Siallagan (191055201183)
Putri Isdayanti (191055201035)
Mahfutzhi (201055201101)

Telah diperiksa dan disetujui oleh Dosen Pengampu dan Ka. Lab Teknik

Informatika pada tanggal............................. 2022

Ka Lab Teknik Informatika Dosen Pengampu Matakuliah,

Hanafi, M.Kom Agus Suryadi, S.Kom, M.Kom


NIDK. 8873810016 NIDN. 1028088702
KATA PENGANTAR

Assalamu’alaikum Wr. Wb

Puji Syukur penulis ucapkan kehadirat Allah SWT atas segala berkat dan

rahmat yang dilimpahkan sehingga penulis dapat menyelesaikan “Laporan

Praktikum Pemrograman Kompetitif”. Pada kesempatan ini penulis ingin

menyampaikan rasa hormat dan terima kasih kepada :

1. Ibu Drg. Andi Tenri Ummu. Selaku Ketua Yayasan Pendidikan Ibnu Sina Batam.

2. Bapak DR. Mustaqim Syuaib, SE, MM Selaku Rektor Universitas Ibnu Sina.

3. Bapak Okta Veza, M.Kom. Selaku Ketua Program Studi Fakultas Teknik.

4. Bapak Hanafi M.Kom Selaku Kepala Lab Teknik Informatika FakultasTeknik

5. Bapak Agus Suryadi .S.kom, M.Kom Selaku Dosen Mata Kuliah Praktikum

Pemrograman Kompetitif.

6. Kepada seluruh pihak yang tidak disebutkan satu persatu yang telahmembantu

dalam penyelesaian laporan ini.

Penulis menyadari bahwa masih banyak kekurangan dalam penulisan

Laporan Praktikum ini. Oleh karena itu, penulis sangat mengharapkan kritik da

saran yang membangun dari semua pihak untuk penyempurnaan penulisan Laporan

ini.

Wassalamu’alaikum Wr. Wb

Batam, Juni 2021


DAFTAR ISI

BAB JUDUL HAL


HALAMAN JUDUL…………………………………………………… i
HALAMAN PENGESAHAN PEMBIMBING………………………. ii
KATA PENGANTAR…………………………………………………. iii
DAFTAR ISI…………………………………………………………… iv

I PENDAHULUAN
1.1 Latar Belakang ……….………………………………………… I-1
1.2 Identifikasi Masalah…………………………………………….. I-2
1.3 Rumusan Masalah……………………………………………….. I-2
1.4 Tujuan Laporan Praktikum……………………………………… I-2
1.5 Manfaat Laporan Praktikum…………………………………….. I-2
1.6 Sistemarika Penulisan………………………………………….... I-3

II LANDASAN TEORI
2.1

III METODE PENELITIAN


3.1 Jenis Data…………………………..………………………….. III-1
3.2 Konsep Perancangan……..……………………………………. III-1
3.3 Metode Perancangan…………………………………………... III-1
3.4 Metode Pengumpulan Data …………………………………… III-2
3.5 Metode Pengolahan Data ………………………………………III-3
3.6 Flowchart ………………………………………………………III-3
3.7 Rancangan Product ………………………………………….III-4

IV HASIL DAN PEMBAHASAN


4.1 Hasil ……………….…………………………………………... IV-1
4.2 Pembahasan…….….………………………………………….. IV-14

V KESIMPULAN DAN SARAN


5.1 Kesimpulan……………………………………………………… V-1
5.2 Saran…………………………………………………………….. V-1

DAFTAR PUSTAKA
I-1

BAB I

PENDAHULUAN

1.1 Latar Belakang

Competitive Programming adalah sebuah kegiatan penyelesaian masalah

(problem solving) tertentu menggunakan program komputer dengan

mengedepankan algoritma yang paling optimal. Competitive Programming

membutuhkan kemampuan logika, matematika dan algoritma yang baik untuk

menyelesaikan masalah-masalah yang diberikan.

Fokus dari pemrograman kompetitif adalah kemampuan menemukan

algoritma penyelesaian masalah dan mengimplementasikan algoritma tersebut

menjadi sebuah program komputer. Sehingga, aspek-aspek pemrograman yang lain

seperti antarmuka grafis, jaringan, basis data, dan lain-lain biasanya tidak perlu

diperhatikan. Pemrograman kompetitif menjadi sngat penting dikarenakan

mengasah kemampuan seorang programer dalam memecahkan masalah

menggunakan pemrograman komputer.

Praktikum ini dilakukan untuk memperdalam kemampuan logika

mahasiswa terutama mengenai tema dynamic programing, struktur data dasar,

graff, struktur data non linier, dan geometri. Sehingga laporan praktikum ini

disusun dengan judul: Solusi algoritma pada masalah dynamic programing, struktur

data dasar, graff, struktur data non linier, dan geometri menggunakan prinsip

pemrograman kompetitive
I-2

1.2 Identifikasi Masalah

Dari latar belakang tersebut dapat di identifikasikan masalah pada

praktikum ini adalah, pencarian solusi algoritma untuk masalah dynamic

programing, struktur data dasar, graff, struktur data non linier, dan geometri

1.3 Rumusan Masalah

Bersarkan identifikasi masalah diatas, rumusan masalah pada praktikum

ini adalah:

1. Bagaimana membuat solusi algoritma masalah dynamic programing?

2. Bagaimana membuat solusi algoritma masalah struktur data dasar?

3. Bagaimana membuat solusi algoritma masalah graff?

4. Bagaimana membuat solusi algoritma masalah struktur data non linier?

5. Bagaimana membuat solusi algoritma masalah geometri?

5.4 Tujuan Praktikum

Berdasarkan rumusan masalah dan identifikasi masalah diatas maka

tujuan masalah dalam laporan ini adalah :

1. Untuk membuat solusi algoritma masalah dynamic programing

2. Untuk membuat solusi algoritma masalah struktur data dasar

3. Untuk membuat solusi algoritma masalah graff

4. Untuk membuat solusi algoritma masalah struktur data non linier

5. Untuk membuat solusi algoritma masalah geometri


I-3

5.4 Manfaat Praktikum

Hasil penulisan laporan ini diharapkan dapat mempermudah bagi pihak-

pihak yang memerlukan data dimasa yang akan datang. Adapun manfaat dari

penulisan ini adalah sebagai berikut:

1. Manfaast Akademik

Hasil praktikum ini dapat diharapkan menjadi acuan dan bahan bacaan bagi

mahasiswa semoga dapat menjadi pedoman di masa yang akan datang.

2. Manfaat Bagi Mahasiswa

Untuk menambah pengetahuan dan wawasan mahasiswa khususnya dalam

mengetahui dan memahami bagaimana cara mengidentifikasi kelebihan dan

kekurangan suatu objek, serta dapat mengambil kesimpulan yang tepat

berdasarkan penelitian tersebut

5.5 Sistematika Penulisan

Sistematika penulisan dalam penyusunan makalah ini, yaitu sebagai berikut :

BAB I PENDAHULUAN

Pada bab ini dibahas mengenai latar belakang, perumusan masalah,identifikasi

masalah, tujuan praktikum, manfaat praktikum dan sistematika penulisan.

BAB II LANDASAN TEORI

Pada bab ini berisi mengenai Teori yang digunakan sebagai dasar.
I-4

BAB III METODOLOGI PENELITIAN

Pada bab ini berisi mengenai metode yang digunakan.

BAB IV HASIL DAN PEMBAHASAN

Pada bab ini berisi mengenai Hasil secara detail dan Pembahasan

BAB V PENUTUPAN

Berisi kesimpulan yang diperoleh dari uraian bab-bab sebelumnya dan saran

diharapkan dapat bermanfaat pada pengembangan penelitian selanjutnya.


II-1

BAB II

LANDASAN TEORI

2.1 Pemrograman Kompetitif

2.2 Dynamic Programing

2.3 Struktur Data Dasar

2.4 Graff

2.5 Struktur Data Non Linier

2.6 Geometri
III-1

BAB III
METODE PENELITIAN

3.1 Jenis Data

Berdasarkan jenis dan Data yang dipakai dalam penulisan Data Sekunder.

Data sekunder adalah suatu data yang bersumber dari kepustakaan yaitu data yang

diperoleh dari data yang berbentuk dokumen

3.2 Metode Pengumpulan Data

Metode pengumpulan data merupakan salah satu aspek yang berperan

dalam kelancaran dan keberhasilan dalam suatu penelitian. Metode pengumpulan

data yang digunakan penulis untuk mengumpulkan sumbernya. Pada praktikum ini

metode pengumpulan datanya adalah dokumentasi, yaitu cara pengumpulan data

primer dengan mengambil data yang telah tersedia dalam bentuk berkas-berkas atau

dokumen resmi yang ada hubungannya dengan masalah dalam penulisan ini.

Dimana data yang dikumpulkan adalah:

a. Buku

Buku-buku yang digunakan adalah buku-buku yang mengandung teori-teori

mengenai pemrograman kompetitif.

b. Artikel

Artikel yang digunakan merupakan artikel-artikel yang membahas teori dan

contoh soal pemrograman kompetitif.


III-2

3.3 Metode Pengolahan Data

Metode pengolahan data yang digunakan dalam pembuatan laporan

praktikum ini adalah sebagai berikut :

1. Pengumpulan Data

2. Menganalisis Data yang Terkumpul

3. Menyimpulkan Hasil Analisis


IV-1

BAB IV

HASIL DAN PEMBAHASAN

4.1 Dynamic Programing

Salah satu masalah yang sering diselesaikan menggunakan dynamic

programing adalah deret fibonacci. Deret bilangan fibonacci adalah serangkaian

deret angka sederhana yang susunan angkanya merupakan penjumlahan dari dua

angka sebelumnya (0,1,1,2,3,5,8,13,21,...dst) rumus deret Fibonacci bisa ditulis

sebagai berikut Un = Un-2 + Un-1, artinya suku ke-n perupakan penjumlahan dari

dua suku sebelumnya.

Deret ini ditemukan pertama kali oleh seorang matematikawan cerdas asal

India Gopala Chanda dengan tujuan mencari susunan barang yang tepat untuk

dimasukan kedalam kantong agar distribusi bisa lebih efektif.

Kemudian sorang matematikawan barat yang berasal dari Italia, Leonardo

"Fibonacci" Da Pisa (1170-1250,) mengadaptasi dan mengembangkan deret ajaib

ini untuk menghitung pola perkembangbiakan kelinci yang ia amati dan tuliskan

dalam buku karangannya yang berjudul Liber Abaci. Saat ini deret fibonacci sering

dipakai sebagai salah satu alat analisis yang digunakan oleh para trader di pasar

uang.

Dalam perancangan deret fibonacci metode yang paling dasar adalah

menggunakan metode looping, seperti yang terlihat dibawah ini:


IV-2

Algoritma diatas saat di run akan menampilkan hasil seperti dibawah ini,

dimana waktu run program membutuhkan 0.942 detik

saat jumlah deret di isi, maka program akan menampilkan deret fibonacci

seperti dibawah ini:


IV-3

Satulagi metoe untuk membuat algoritma deret fibonacci adalah dengan

menggunakan fungsi rekursif untuk menggantikan fungsi looping seperti tampak

dibawah ini:

Hasil yang dihasilkan akan sama tetapi akan ada perbedaan waktu

eksekusi, dimana fungsi rekursif menjadikan waktu ekseskusi lebih cepat yaitu

0.878 detik
IV-4

4.2 Struktur Data Dasar

Struktur data yaitu cara menyimpan dan mengatur data dengan

menyusunnya secara terstruktur pada sistem komputer atau database yang

memudahkan dalam akses. Secara teknis, data yang berupa angka, huruf, simbol,

dan lainnya ini ditempatkan pada kolom-kolom dan susunan tertentu.

Struktur data aray cocok digunakan ketika kita tidak tahu banyaknya

elemen yang akan disimpan. Sebagai contoh, misalnya kita perlu menyimpan nama

N orang yang dikelompokkan menurut berat badan dalam kilogram (kg).

Asumsikan pula berat badan N orang ini berupa bilangan bulat pada rentang 1 kg

sampai dengan K kg, dan belum diketahui berapa paling banyak orang yang

memiliki berat sekian kg. Untuk menyimpan data tersebut, kita dapat membuat

array nama dengan K elemen, yang masing-masing elemennya berupa dynamic

array . Untuk orang dengan berat x kg, simpan datanya pada dynamic array

nama[x]. Dengan cara ini, kebutuhan memorinya adalah O(N).

Berikut contoh algoritma dan hasil algoritma saat di run membutuhkan

waktu 0.06835 detik.

4.3 Graff

Teori graph atau teori grafik dalam matematika dan ilmu komputer adalah

cabang kajian yang mempelajari sifat-sifat "graf" atau "grafik". Ini tidak sama
IV-5

dengan "Grafika". Secara informal, suatu graf adalah himpunan benda-benda yang

disebut "simpul" (vertex atau node) yang terhubung oleh "sisi" (edge) atau "busur"

(arc). Biasanya graf digambarkan sebagai kumpulan titik-titik (melambangkan

"simpul") yang dihubungkan oleh garis-garis (melambangkan "sisi") atau garis

berpanah (melambangkan "busur").

Salah satu implementasi graff adalah dalam pencarian jalur terpendek,

yang digunakan untuk melihat kemungkinan jalur terpendek yang bisa didapat.

Berikut contoh algoritmanya:

Yang menghasilkan seperti dibawah ini saat di run


IV-6

4.4 Struktur Data Non Linier

Struktur Data Non Linier merupakan salah satu bentuk struktur data

tidak Linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan

one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai

kumpulan simpul/node dengan satu elemen khusus yang disebut Root

dan node lainnya terbagi menjadi himpunan-himpunan yang saling

tak berhubungan satu sama lainnya (disebut subtree). Struktur Data Non

Linier adalah Binary Tree.

Berikut contoh algoritma dari binary tree


IV-7

Algoritma diatas memberikan hasil seperti dibawah ini


IV-8

4.5 Geometri

Geometri merupakan salah satu sistem dalam matematika yang diawali

oleh sebuah konsep pangkal, yakni titik. Titik kemudian digunakan untuk

membentuk garis dan garis akan menyusun sebuah bidang. Pada bidang akan dapat

mengonstruksi macam-macam bangun datar dan segi banyak. Segi banyak

kemudian dapat dipergunakan untuk menyusun bangun-bangun ruang.

Salah satu implementasinya adalah algoritma perhitungan luas segitiga,

seperti yang terlihat dibawah ini

Yang saat di run membutuhkan waktu 11.81 detik dan menampilkan hasil

sebagai berikut
V-1

BAB V

KESIMPULAN DAN SARAN

1.1 Kesimpulan

Dari hasil dan pembahasan dapat disimpulkan bahwa praktikum berhasil:

1. Membuat solusi algoritma masalah dynamic programing

2. Membuat solusi algoritma masalah struktur data dasar

3. Membuat solusi algoritma masalah graff

4. Membuat solusi algoritma masalah struktur data non linier

5. Membuat solusi algoritma masalah geometri

1.2 Saran

Meskipun praktikum kali ini berhasil mendapatkan solusi algoritma untuk

setiap masalah, disarankan kepada peneliti selanjutnya untuk mencoba

menggunakan persoalan lain yang belum dibahas pada praktikum ini.


DAFTAR PUSTAKA

Anda mungkin juga menyukai