Pertemuan 1
Logika diperkenalkan oleh Aristoteles (384-322 SM)
Algoritma diperkenalkan oleh Abu Ja’far Muhammad ibnu Musa Al
Khawarizmi, ilmuan Persia yang menulis kitab al jabr w’al muqbala (rules of
restoration and reduction) sekitar tahun 825 M
Definisi Logika : Ilmu dalam lingkungan filsafat yang membahas prinsip-
prinsip dan hukum penalaran dengan tepat (Rakmat, 2013)
Ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berpikir
valid menurut aturan yang berlaku (Mustofa, 2016)
Definisi Algoritma: Urutan Langkah untuk menyelesaikan masalah matematika
dan logika (Zaman & Wicaksono, 2020)
Deretan intruksi yang jelas untuk memecahkan masalah (Rinaldi munir, 2016)
Sekumpulan intruksi yang jumlahnya terbatas, yang apabila dilaksanakan akan
menyelesaikan suatu tugas tertentu (Sjukani, 2013)
Karakter Algoritma
1. Algoritma harus berhenti setelah mengerjakan sejumlah Langkah terbatas
2. Setiap Langkah harus didefinisikan dengan tepat dan tidak berarti dua
(ambiguous)
3. Algoritma memiliki nol atau lebih masukan (input)
4. Algoritma mempunyai nol atau lebih keluaran (output)
5. Algortima harus sangkil (effective), setiap Langkah harus sederhana sehingga
dapat dikerjakan dalam sejumlah waktu yang masuk akal
1. Algoritma PE-UBAH
Adalah variable yang nilainya BUKAN konstanta (selalu berubah-ubah sesuai
dengan kondisi variabel terKINI)
2. Algoritma PERTUKARAN
Berfungsi mempertukarkan masing-masing isi variabel sedemikian sehingga
nilai dari tiap variabel akan berubah atau bertukar
Boolean : Mempunyai dua nilai yaitu true berniali 1 dan false bernilai 0
String : Terdiri dari karakter/kalimat berupa huruf, angka, dll (diapit tanda
“ atau ‘)
Integer : Menyatakan bilangan bulat
Float : Menyatakan bilangan yang mempunya koma
Complex : Menyatakan pasangan angka real dan imajiner
List :Adalah sebuah array yang berisi kumpulan tipe yang tidak sejenis,
Data untaian yang menyimpan berbagai tipe data, tapi isinya tidak dapat
berubah-ubah
Hexadecimal: Menyatakan bilangan dalam format heksa
Dictionary : Data untaian yang menyimpan berbagai tipe data berupa pasangan
penunjuk dan nilai
2. Input/Output
Mmebaca masukan (input) atau menampilkan keluaran (Ouput).
3. Proses/Prosessing
Mengolah data melalui operasi aritmatika dan logika.
4. Decision/(kotak Keputusan)
Befungsi untuk memutuskan arah/percabangan yang diambil sesuai dengan
kondisi yang dipenuhi, yaitu benar/salah.
5. Subroutine/subrutin
Untuk menjalankan proses suatu bagian (sub program) atau prosedur.
6. Onpage Connector
Untuk menghubungkan diagram alur yang terputus Dimana bagian tersebut
masih berada pada halaman yang sama.
7. Flowline/Arus data
Bagian arah intruksi yang dijalankan
8. Offpage Connector
Menghubungkan sambungan dari bagian flowchart yang terputus Dimana
sambungannya berada pada halaman lain.
9. Preparation
Digunakan untuk pemberian harga awal.
Diagram Alir Program Komputer
Suatu program komputer terdiri atas:
1. Pembacaan/pemauskan data kedalam komputer
2. Melakukan komputasi/perhitungan terhadap data tersebut
3. Mengeluarkan/mencetak/menampilkan hasilnya.
Struktur Branching
1. Struktur Percabangan if
STruktur percabangan if digunakan untuk satu pilihan Keputusan.
Jika kondisi true/benar maka statement dikerjakan.
Jika kondisi false/salah maka statement tidak dikerjakan.
2. Struktur Percabangan if…else
Percabangan if…else akan menyeleksi kondisi jika bernilai true/benar maka
statement1 dijalankan, jika kondisi bernilai false/salah make statement2
dijalankan.
3. Struktur Percabangan if…elif…else
Digunakan untuk menguji lebih dari 2 kondisi, bila ondisi 1 benar maka
statement1 dikerjakan, bila salah menuju ke kondisi 2, bila konidis 2 benar
maka statement2 dikerjakan, jika salah maka statement3 dikerjakan.
4. Struktur Percabangan Nested if (Bersarang)
Kondisi nested if adalah sautu kondisi if didalam kondisi if.
Pertemuan 5
Looping
Instruksi pengulangan (repetition) adalah intruksi yang dapat mengulangi
pelaksanaan sederetan intruksi lain berulang kali sesuai dengan persyaratan
yang ditentukan.
Struktur intruksi perulangan pada dasarnya terdiri atas:
1. Kondisi perulangan. Suatu kondisi yang harus dipenuhi agar perulangan
dapat terjadi.
2. Badan (body) perulangan. Deretan intruksi yang akan diulang-ulang
pelaksaannya.
3. Pemecah (counter) perulangan. Suatu variabel yang nilainya harus berubah
agar perulangan dapat terjadi dan pada akhirnya membatasi jumlah perulangan
yang dapat dilaksanakan.
Perintah BREAK
Berfungsi untuk keluar dari suatu loop for atau while, Looping akan terus
dikerjakan terus sampai dipaksa keluar oleh intruksi break;
Perintah CONTINUE
Fungsi continue akan melakukan pengulangan ulai dari awal lagi
Pertemuan 6
Struktur Rekursif
Rekursif adalah suatu proses yang bisa memanggil dirinya sendiri.
Contoh konsep penggunaan Rekursif:
Masalah : Memotong Roti tawar tipis-tipis sampai habis
Algoritma :
1. Jika roti sudah habis atau pemotongannya sudah paling tipis maka
pemotongan roti selesai.
2. Jika roti masih bisa dipotong, potong tipis dari tepi roti tersebut, lalu lakukan
prosedur 1 dan 2 untuk sisa potongannya.
2. Fungsi Faktorial
0! = 1
N! = N x (N-1) untuk N > 0
Secara notasi pemrograman dapat ditulis sebagai:
FAKT (0) = 1
FAKT (N) = N * FAKT (N-1)
3. Fibonancy
Deret Fibonancy: 0,1,1,2,3,5,8,13…
Secara notasi pemrograman dapat ditulis sebagai:
Fibo (1) = 0 & Fibo (2) = 1
Fibo (N) = Fibo (N-1) + Fibo (N-2)
Dapat melakukan loop atau pengulangan melalui elemen didalam array dengan
mudah dan mengambil nilai yang diperlukan hanya dengan menntukan nomor
indeks.
Pertemuan 10
Metode D dan C
Metode D and C menggunakan Teknik rekursif yang membagi masalah menjadi
dua atau lebih submasalah dengan ukuran yang sama. Masalah umum untuk
Teknik ini seperti pengurutan, perkalian. (Merge sorting, Quick sorting, Binary
Search, Teknik D & C)
Divide
Memilah data nilai elemen-elemen dari rangkaian data menjadi dua bagian dan
mengulangi pemilahan hingga satu elemen terdiri maksimal dua nilai.
Conquer
Mengurutkan masing-masing data nilai elemen
Merge sort
Menggabungkan dua array yang sudah terurut, metode merge sort merupakan
metode yang membutuhkan fungsi rekursif untuk penyelesaiannya.
Quick sorting
Merupakan metode yang tercepat, Quicksort diperkenalkan oleh C.A.R. Hoare.
Konsepnya membuat bagian-bagian, dan sort dilakukan perbagian, pada
algoritma Quicksort, pemilihan pivot merupakan hal yang menentukan apakah
algoritma Quicksort tersebut akan memberikan performa terbaik atau terburuk.
Binary search
Digunakan untuk mencari sebuah data pada himpunan data-data yang tersusun
secara urut, yaitu data yang telah diurutkan dari besar ke kecil/sebaliknya.
Proses dilaksanakan pertama kali pada bagian Tengah dari elemen himpunan,
jika data yang dicari ternyata < elemen bagian atasnya, maka pencarian
dilakukan bagian Tengah ke bawah.
Teknik D & C
Dengan prinsip dasar metode Divide & Conquer akan dapat dipecahkan suatu
permasalahn proses searching elemen max & min dengan Teknik D and C,
menghasilkan Solusi optimal menemukan nilai Maximum dan Minimum.
Lalu proses tree cal dari setiap elemen yang dituunjuk pada bagan tree tersebut
diatas. Dengan cara, membalik terlebih dahulu posisi tree dari bawah ke atas.
Lalu mengisinya dengan elemen-elemennya sesuai dnegan bagan tree.
Pertemuan 11
Pengertian Sorting (Selection sort, Bubble sort, Insection sort)
Sorting adalah proses pengaturan sederetan data ke dalam suatu urutan atau
susunan urutan tertentu. Data yang diurutkan dapat berupa data bilangan, data
karakter maupun data string.
Hal yang mempengaruhi kecepatan algoritma sorting:
Jumlah operasi perbandingan dan jumlah operasi pemindahan data.
Selection Sort
Teknik pengurutan dengan cara pemilihan elemen atau proses kerja dengan
memilih elemen data terkecil untuk kemudian dibandingkan dan ditukarkan
dengan elemen pada data awal dst s/d seluruh elemen sehingga menghasilkan
pola data yang telah disorting.
1. Pengecekan dimulai dari data ke-1 sampai dengan data ke-n
2. Tentukan index bilangan dengan nilai terkecil dari data bilangan tersebut.
3. Tukar bilangan pada index tersebut dengan bilangan pada posisi awal iterasi
(I = 0 untuk bilangan pertama) dari data bilangan tersebut.
4. Ulangi Langkah diatas untuk bilangan berikutnya (I – I+1) sampai n-1 kali.
Bubble Sort
Metode pengurutan dengan membandingkan data nilai elemen yang sekarang
dengan data nilai elemen-elemen berikutnya.
Pembandingan elemen dapat dimulai dari awal atau mulai dari paling akhir.
Apabila elemen yang sekarang lebih besar (untuk urut menurun) atau lebih kecil
(untuk urut menurun) dari elemen berikutnya, maka posisinya ditukar, tapi jika
tidak maka posisinya tetap
1. Pengecekan mulai dari data ke-1 sampai data ke-n.
2. Bandingkan data ke-1 dengan data sebelahnya (ke-2).
3. Jika lebih besar maka pindahkan bilangan tersebut dengan bilangan yang ada
didepannya.
4. Jika lebih kecil maka tidak terjadi pemindahan.
5. Ulangi Langkah 1 s/d sebanyak n-1 kali dengan jumlah data dikurang 1 setiap
iterasi.
Insertion Sort
Pengurutan data yang membandingkan data dengan dua elemen data pertama,
kemudian membandingkan elemen-elemen data yang sudah diurutkan,
kemudian perbandingan antara data tersebut akan terus diulang hingga tidak ada
elemen data yang tersisa.
Mirip dengan cara mengurutkan kartu, perlembar yang diambil dan disisipkan
(insert) ke tempat yang seharusnya.
1. Index awal adalah data ke-2
2. Pengecekan mulai dari data ke-1 sampai data ke-(index 1).
3. Bandingkan data pada posisi index dengan data pengecekan.
4. Jika data pada posisi index lebih kecil maka data tersebut dapat disisipkan
sesuai dengan posisi saat pengecekan kemudian geser data sisanya.
5. Ulangi Langkah diatas untuk index berikutnya (I = I+1) sampai n-1 kali.
Kesimpulan
Bubble sorting membutuhkan waktu komputasi paling lama, Insertion dan
selection sort memiliki komplesitas yang sama dengan Bubble sort, tetapi
waktunya lebih cepat.
Pertemuan 11
Teknik Searching
Ialah Teknik dalam memilih dan menyeleksi sebuah elemen dari beberapa
elemen yang ada.
a. Teknik Linear/Sequential Search
Pencarian yang dimulai dari record-1 diteruskan ke record selanjutnya yaitu
record-2, ke-3…, sampai diperoleh isi record sama dengan informasi yang
dicari (nilai x).
Kecepatan waktu pencarian tergantung pada: Jumlah elemen data dan posisi
data yang dicari
b. Teknik StraitMAXMIN
Menentukan atau mencari elemen max dan min. pada himpunan yang berbentuk
array linear.
Analisis waktu tempuh/time complexity yang digunakan untuk menyelesaikan
pencarian hingga mendapatkan Tingkat kompleksitas yang terbagi atas best
case, worst case dan average case.
Best Case
- Pada kasus ini keadaan tercapai jika elemen pada himpunan A disusun
secara increasing (menaik).
- Dengan perbandingan waktu n-1 kali satuan operasi.
- Kondisi pencarian yang tercepat atau terbaik.
Worst Case
- Pada kasus ini terjadi jika elemen dalam himpunan nilai yang terbesar
berada di paling depan atau disusun secara decreasing (menurun).
- Dengan operasi perbandingan sebanya 2(n-1) kali satuan operasi.
- Kondisi pencarian terlama atau terburuk.
Average Case
- Digunakan untuk memprediksi jumllah Langkah atau operasi jika
pencarian elemen MaxMin dilakukan pada elemen dalam himpunan yang
tersusun secara acak (tidak decreasing atau tidak increasing).
- Kondisi pencarian acak
*note
Penggunaan average case digunakan untuk membandingkan algoritma Dimana
jika terjadi perbedaan nilai yang lebih baik antara best case dan worst case
seperti merge sort dan quick sort. Dimana best case lebih baik quick sort namun
worst case lebih baik merge sort sehingga untuk menentukan algoritma terbaik
dilakukan perbandingan average case (tidak dibahas karena merupakan analisis
algoritma yang lebih mendalam).
Kesimpulan
- Setiap algoritma bisa dianalisis Langkah operasi yang dilakukan untuk
menentukan kompleksitasnya.
- Untuk menyatakan suatu algoritma lebih baik bisa dilakuka dengan
membandingkan kompleksitas algoritma tersebut secara menyeluruh.
- Jika terjadi perbedaan nilai yang lebih baik antara Best Case dan Worst
Case, maka untuk menentukan algoritma terbaik bisa dilakukan
perbandingan Average Case.
Pertemuan 13
- Greedy diambil dari Bahasa inggris berarti rakus, tamak, loba, serakah.
- Prinsip greedy: “Take what you can get now!”.
- Algoritma greedy membentuk Solusi Langkah-perlangkah.
Strategi pencarian untuk masalah optimasi berbasis prinsip: pada setiap tahap,
pilih Solusi paling baik. Dengan harapan, semua tahapan ini akan menemukan
Solusi terbaik untuk masalah tersebut. Algoritma greedy termasuk sederhana
dan tidak rumit.
Untuk mendapatkan Solusi optimal dari permasalah yang mempunya dua
kriteria, yaitu:
1. Fungsi tujuan/utama.
2. Nilai pembatas (constrain).
Pertemuan 15
Graph merupakan cabang matematika yang dapat diterapkan dalam kehidupan
sehari-hari, teori graph dapat memecahkan banyakk masalah yang ada.
Graph digunakan untuk bermacam-macam disiplin ilmu dan kehidupannya
sehari-hari. Graph digunakan di berbagai bidang (kimia, ekologi, genetika,
olahraga, transportasi, kartografi, dan jaringan komputer) untuk memodelkan
masalah.
1. Travelling Salesman
Untuk menentukan waktu perjalanan seorang salesman seminimal mungkin.
2. Minimun Spanning Tree
Mencari minimum biaya (cost) spanning tree dari setiap ruas (edge) graph yang
membentuk pohon (tree).