PENGERTIAN DASAR
LOGIKA DAN ALGORITMA
PENGERTIAN DASAR
LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)
ALGORITMA
Diperkenalkan Oleh Ahli Matematika : Abu Ja’far
Muhammad Ibnu Musa Al Khawarizmi.
Seorang ilmuan Persia yang menulis kitab al jabr w’al
muqabala (rules of restoration and reduction) sekitar tahun
825 M
Definisi Logika
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus
diikuti agar dapat berfikir valid menurut aturan yang
berlaku.
Definisi Algoritma
1. Langkah - langkah yang dilakukan agar solusi
masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-
langkah yg berintegrasi.
3. Suatu metode khusus yang digunakan untuk
menyelesaikan suatu masalah yang nyata.(Webster
Dictionary)
TAHAP PENYELESAIAN MASALAH
Masalah
Analisis Model
Algoritma Analisis
Analisis Program
Eksekusi
Data
Hasil
Kriteria Pemilihan Algoritma.
1. Ada Output,
2. Efektifitas dan Efesiensi,
3. Jumlah Langkahnya Berhingga,
4. Berakhir, ( SEMI ALGORITMA )
5. Terstruktur,
Masukan
Alas
Masukan
Tinggi
Cetak
Luas
Stop
c. Dengan Statement program / penggalan
Program
KONSEP ALGORITMA
Konsep ALGORITMA
1. ALGORITMA PE-UBAH
Adalah Variabel yang nilainya BUKAN konstanta (selalu
berubah – sesuai dengan kondisi Variabel terKINI)
Sintaks : P=Q
Algoritma : PQ
Arti : Bahwa Nilai P diberi harga Nilai Q
Nilai P akan SAMA DENGAN nilai Q, & Nilai Q TETAP
2. ALGORITMA PERTUKARAN
Berfungsi mempertukarkan masing-masing isi Variabel
sedemikian sehingga Nilai dari tiap Variabel akan
berubah/bertukar
Contoh Soal:
1. Diketahui P=0, Q=5 dan R=10.
Diberikan Algoritma P=Q,Q=R, mk Nilai P,Q,R
sekarang?
Visualisasi
5. Berapa banyaknya garis minimal untuk menutup
seluruh titik-titik yang ada dibawah ini dengan syarat
bahwa untuk membuat garis tersebut tidak boleh
terputus :
a.
b.
c.
d.
6. Algoritma Pertukaran Isi Bejana
Diberikan dua buah bejana, A dan B; bejana A berisi larutan
berwarna merah, bejana B berisi larutan berwarna biru.
Bejana A Bejana B
Keadaan Awal Sebelum Pertukaran:
PROSES
tipe data
Konstanta :
Sebuah variabel dengan tipe data tertentu dan
memiliki nilai data yang akan selalu tetap di dalam
program.
+ , - Penjumlahan,
Pengurangan
Operator Keterangan
= Sama dengan (assignment)
!= Tidak sama dengan
> Lebih besar
< Lebih kecil
== Sama dengan (bukan assignment)
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
3. Tipe Bool
nilai pengambilan suatu keputusan pada program, tipe
ini mempunyai 2 nilai yaitu benar(T) atau salah (F).
Operator yg digunakan AND, OR atau NOT.
Input NOT (!) AND (&&) OR (||)
A B C !A !B !C A&&B&&C A||B||C
0 0 0 1 1 1 0 0
0 0 1 1 1 0 0 1
0 1 0 1 0 1 0 1
0 1 1 1 0 0 0 1
1 0 0 0 1 1 0 1
1 0 1 0 1 0 0 1
1 1 0 0 0 1 0 1
1 1 1 0 0 0 1 1
4. Tipe Char
digunakan untuk menampung data sebuah karakter.
untuk menuliskan tipe char, karakter perlu ditulis di
dalam tanda petik tunggal ( ‘ )
Contoh :
‘A’ karakter berupa huruf A
‘1’ karakter berupa angka 1
‘*’ karakter simbol *
II. Tipe String
merupakan sekumpulan dari beberapa karakter, yang
banyaknya berubah-ubah sesuai kebutuhan,besarnya 1
s/d 255 karakter.
Pemberian nilai String diapit dengan tanda petik ganda (“)
Bentuk umum penulisan tipe data ini adalah :
tipe_data pengenal [panjang] ;
pengenal = nama variabel
panjang = bilangan bulat yg menunjukan
jumlah karakter
Contoh : char nama[15] ;
Fungsi pada Operasi STRING
1. Strcpy()
untuk menyalin nilai string.
2. Strcat()
untuk menggabungkan nilai string.
3. Strcmp()
untuk membandingkan 2 nilai string.
4. Strlen()
untuk mengetahui panjang nilai string.
5. Strchr ()
untuk mencari nilai karakter dalam string.
III. Tipe Terstruktur
bermanfaat untuk mengelompokkan sejumlah data
dengan tipe data yang berlainan.
Contoh :
struct data_pegawai
{
int nip;
char nama[25];
char alamat[40];
}
Contoh program sederhana :
#include <conio.h>
#include <iostream.h>
#include <math.h>
void main()
{
int x,y,z;
clrscr();
cout <<“\n input nilai X=“; cin >> x;
cout <<“\n input nilai Y=“; cin >> y;
z = x + y;
cout <<“\n hasil penjumlahan =“ << z;
getch();
}
Tugas kelompok (max 5 orang):
Membuat program sederhana dengan menggunakan C++
• Menghitung Luas segitiga
• Menghitung Luas Persegi Panjang
• Menghitung Luas Bujur Sangkar
Catatan :
- Pergunakan fungsi cin dan cout atau scanf dan printf
- Tampilkan NIM, Nama & Kelas pada program tersebut
- Listing progam & output dicetak
DIAGRAM ALUR (FLOWCHART)
y
t
3. Stuktur Looping
Contoh :
Catatan :
Ketiga struktur diatas dapat digunakan secara
bersamaan pada satu diagram alur.
Input Keterangan :
A 1. Masukan Nilai Variable A
mis : 3
A=A*2
2. Proses A dengan A*2
3. Cetak hasil proses diatas
Cetak A
A=A*2 yg menghasilkan A=6
END
STRUKTUR BRANCHING (Percabangan)
A. Bersyarat
1. IF
2. IF......ELSE
3. NESTED IF atau IF ELSE Majemuk
4. SWITCH.....CASE
B. Tidak Bersyarat
• Goto
A. Bersyarat
1. IF
Diagram yg alurnya ada/banyak terjadi alih kontrol
berupa percabangan & terjadi apabila kita dihadapkan
pada suatu Kondisi dengan dua pilihan BENAR/ SALAH.
Bentuk Umum :
if (kondisi)
pernyataan ;
Struktur Branching/percabangan:
y
t
2. IF ...... ELSE
Bentuk umum :
if (kondisi)
perintah1;
else
perintah 2;
Diagram alur dr pemakaian IF......ELSE sbb:
kondisi y
t Perintah 2
Perintah 1
3. Nested IF
Pernyataan if yang berada dalam pernyataan if yang lain
Bentuk umum :
if (syarat) perintah
kondisi1
if (syarat) y
....perintah; t
else
....perintah; kondisi2 y perintah
else
if (syarat) t
....perintah; kondisi3 y perintah
else
....perintah; t
perintah
IF.....ELSE Majemuk (bertingkat)
If-else majemuk mirip dengan nested if. Keuntungan
penggunaan if-else majemuk adalah bentuk penulisan
yang lebih sederhana.
Bentuk umum :
if (syarat)
{
... Perintah;
}
else if (syarat)
{
... Perintah;
}
else
{
... Perintah;
}
4. Switch Case
untuk menangani pengambilan keputusan yang
melibatkan sejumlah atau banyak alternatif.
Bentuk Umum :
switch (ekspresi integer atau karakter)
{
case konstanta1:
...perintah;
break;
case konstanta2:
...perintah;
break;
default :
...perintah;
break;
}
B. Tidak Bersyarat
• Go To
Bentuk umum :
goto label;
Contoh :
Hitung : statement;
statement;
statement;
statement;
Goto hitung;
Latihan :
Tentukan Output dari Flowchart dibawah ini :
START
START
INPUT X
INPUT
A
X=2*X
X=X+7 INPUT
B
X=5*X Cetak ‘A
Y lebih
X=X+5 A>B besar’
?
X=X+10 T
Cetak ‘B
CETAK lebih
X besar’
END END
TUGAS KELOMPOK (Max 5 orang) dibuat
menggunakan Microsoft Office Visio
1. Buatlah Flowchartnya dari pseudocode berikut ini:
a. Masukan kode barang
b. Masukan harga barang
c. Masukan Jumlah barang
d. Hitung bayar = harga * Jumlah barang
e. Jika bayar >= 100.000 maka diberikan discount
10%, selain dari itu tidak mendapat discount
f. Hitung total bayar = bayar - discount
g. Cetak total bayar
2. Buatlah Flowchartnya dari pseudocode berikut ini:
a. Diketahui phi=3.14
b. Masukan nilai jari-jari (r)
c. Hitung Keliling = 2 * phi * r
d. Cetak Keliling
e. Ingin menghitung kembali? Jika Ya maka kembali ke
proses awal, jika Tidak maka program berhenti.
3. Buatlah Flowchartnya dari pseudocode berikut ini:
a. Masukan pilihan
b. Jika pilihan=1 maka menu=“nasi goreng”
jika pilihan=2 maka menu=“mie goreng”
jika pilihan=3 maka menu=“capcay”
c. Cetak menu
d. Ingin pilih kembali? Jika Ya maka kembali ke proses
awal, jika Tidak maka program berhenti.
PERTEMUAN 5
STRUKTUR LOOPING
Pemutaran kembali, terjadi ketika mengalihkan arus
diagram alur kembali ke atas, shg bbrp alur berulang bbrp
kali.
(1)Variabel A diberi harga 1
(2)Var. A berubah hrg menjadi 2
A1
(3)Var. B diberi hrg sebesar hrg A
AA+1
dikalikan hrg A
BA*A
(4)Harga B dicetak
Kembali lg?
Lalu ke (2), (3),(4) & kembali lagi ke
1. Statement While
2. Statement Do.....While
3. Statement FOR
a. Statement FOR Positif
b. Statement FOR Negatif
c. Statement FOR bersarang ( Nested Loop )
1. Statement While
Perulangan akan terus dilaksanakan selama
syarat tersebut terpenuhi.
Bentuk Umum :
while (syarat)
pernyataan ;
Contoh :
Int bil=1;
While(bil<=5)
cout<<bil;
++bil; bil = bil+1
Output : 1 2 3 4 5
2. Statement Do.....While
Perulangan akan dilaksanakan terlebih dahulu dan
pengujian perulangan dilakukan belakangan.
Bentuk Umum :
do
pernyataan;
while (syarat);
Contoh :
Int bil=2;
do
cout<<bil;
bil+=2;
While (bil<=10);
Output : 2 4 6 8 10
3. Statement For
Bentuk Umum :
For (inisialisasi; syarat pengulangan; pengubah nilai)
a. Fungsi pangkat
b. Faktorial
c. Fibonancy
d. Menara Hanoi
Fungsi Pangkat
Menghitung 10 pangkat n dengan menggunakan konsep
rekursif.
Contoh :
10 3 = 10 * 10 2
10 2 = 10 * 10 1
10 1 = 10 * 10 0
10 0 = 1
Faktorial
0! = 1
N! = N x (N-1)! Untuk N > 0
Contoh :
FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Nilai Awal
Misal :
hitung 5!, maka dapat dilakukan secara rekursif
dgn cara :
5! = 5 * 4!
Contoh :
Fibo(5) = Fibo(4) + Fibo(3)
Fibo(4) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1)
Nilai Awal
Contoh Listing Fibonancy
#include <iostream.h>
Void a(void); void b(void); void c(void); // function prototype
Int x=1 ; // global variable
Int main()
{
int x=5; //local variable to main
cout << “local x in outer scope of main is” << x << endl;
{
int x=7;
cout << “local x in inner scope of main is” << x << endl;
}
cout << “local x in outer scope of main is” << x << endl;
a(); b(); c(); a(); b(); c();
cout << “local x in main is” << x << endl;
return 0;
}
Void a(void)
{
int x=25;
cout << endl << “local x in a is”<< x
<< “after entering a”<< endl;
++x;
cout << "local x in a is " << x
<< " before exiting a" << endl;
}
Contoh Listing Fibonancy (lanjutan)
void b( void )
{
static int x = 50; // Static initialization only
// first time b is called.
cout << endl << "local static x is " << x
<< " on entering b" << endl;
++x;
cout << "local static x is " << x
<< " on exiting b" << endl;
}
void c( void )
{
cout << endl << "global x is " << x
<< " on entering c" << endl;
x *= 10;
cout << "global x is " << x << " on exiting c" << endl;
}
Konsep Menara Hanoi.
A B C
Tiang Asal Tiang Bantuan Tiang Tujuan
Menara (n,asal,bantu,tujuan)
2N - 1
N = Jumlah Piringan
LARIK ATAU ARRAY
adalah tipe terstruktur yang terdiri dari
sejumlah komponen yang mempunyai tipe
data yang sama.
Variabel Array terdiri dari :
1. Array Berdimensi Satu
2. Array Berdimensi Dua
1. Array Berdimensi Satu
Bentuk Umum :
Tipe_Data Nama_Variabel [ukuran]
Contoh:
int nilai [6];
jumlah elemen
nama array
tipe data elemen array
2. Array Berdimensi Dua
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
Contoh:
int nilai [2] [3] ;
jumlah kolom
jumlah baris
nama array
tipe data elemen array
Contoh I :
int i, j ;
int tabel [3] [2] ;
for (i=0; i<=2 ; i++)
{
for (j=0; j<=1 ; j++)
{
cout<< “data ke - ”<< i << j<<endl;
cout<< “nilai =“ ;
cin>> tabel [ i ] [ j ];
}
} Tabel[0][0] Tabel[0][1]
Tabel[2][0] Tabel[2][1]
Contoh II :
Diberikan matriks A sebagai berikut :
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
matriks A adalah :
4. Diberikan algoritma sbb :
int i ;
int nilai[4];
for(i=0;i<=3;i++)
{
a[i] = 2 * i + 1;
cout<<a[i];
}
int i;
int x[4], y[4];
float hasil ;
hasil=0;
for(i=0; i<=3; i++)
hasil = hasil + x[i] / y[i];
cout<<“hasil=“<<hasil;
Solusi Optimal
SORTING
1. Metode Selection Sort
2. Metode Buble Sort
3. Metode Merge Sort
4. Metode Quick Sort
5. Metode Insertion.
Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8
2
Langkah 3 : 2 10 15 3 8 22
Langkah 4 : Ulangi langkah 2 dan 3 .
Iterasi 2
Langkah 1: 2 10 15 3 8 22
Langkah 2: 2 10 15 3 8 22
Langkah 3: 2 3 15 10 8 22
Langkah 4: Ulangi langkah 2 dan 3 .
terasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8 2
Langkah 3 : 22 10 15 3 2 8
Langkah 4 : Ulangi langkah 2 dan 3
Hasil iterasi 1 : 2 22 10 15 3 8
Iterasi 2
Langkah 1 : 2 22 10 15 3 8
Langkah 2 : 2 22 10 15 3 8
- 8>3, maka 8 tidak pindah,
untuk selanjutnya bandingkan
data sebelunya yaitu 3.
Langkah 3 : 2 22 10 3 15 8
Langkah 4 : Ulangi langkah 2 dan 3
Hasil Iterasi 2 : 2 3 22 10 15 8
Lakukan Iterasi selanjutnya sampai iterasi ke- 6
QUICK SORT
Sort dgn iterasi scr urut dr posisi elemen 1, ke-2
dstnya. Tukarkan setiap elemen pd posisi tsb dgn
elemen lain yg nilainya memang shrsnya berada pd
posisi tsb.
Prinsip Kerja dari Quick Sort adalah :
1. Tentukan Lower Bound (Batas Bawah) & Upper
Bound (Batas Atas)
2. Bandingkan Lower Bound (LB) dengan Upper
Bound (UB)
3. Jika LB>UB, Tukar (cari operasi perbandingan
yang optimal/terkecil)
4. Jika LB =< UB, maka Next Upper Bound & Lower
Bound
5. Ulangi langkah diatas s/d sort.
Contoh : 22 10 15 3 8 2
Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
LB UB
Langkah 2 :2 10 15 3 8 22
Iterasi 2
Langkah 1 : 2 10 15 3 8 22
LB/UB
Langkah 2 :2 10 15 3 8 22
LB UB
Iterasi 3
Langkah 1 :2 10 15 3 8 22
LB UB
Langkah 2 :2 8 15 3 10 22
Iterasi 4
Langkah 1 :2 8 15 3 10 22
LB UB
Langkah 2 :2 3 15 8 10 22
Langkah 1: 10 22 15 3 8 2
Langkah 2: 10 22 15 3 8 2
Langkah 3: 10 15 22 3 8 2
Langkah 4: Ulangi langkah 2 dan 3
Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 10 22 3 15 2 8
Iterasi 2
Langkah 1 : 10 22 3 15 2 8
Langkah 2 : 3 10 15 22 2 8
Iterasi 3
Langkah 1 :3 10 15 22 2 8
Langkah 2 :2 3 8 10 15 22
PERTEMUAN 11
TEHNIK SEARCHING
TEHNIK SEARCHING
Tehnik Pencarian :
1. Tehnik Pencarian Tunggal :
a. Tehnik Sequential Search / Linier Search
b. Tehnik Binary Search
1,9
1,5 6,9
1,2 3,3
Lalu Proses tree call dr setiap elemen yg ditunjuk pada
bagan tree tersebut diatas. Dengan cara, membalik
terlebih dahulu posisi tree dr bawah ke atas. Lalu
mengisinya dengan elemen-elemnnya sesuai dengan
bagan tree. Perhatikan bagan tree call ini :
1,2 22,13 3,3 -5,-5
6,9 60,17
1,5 22,-8
1,9 60,-8
PERTEMUAN 12
METODE GREEDY
METODE GREEDY
Untuk mendapatkan solusi optimal dr
permasalahan yg mempunyai dua kriteria
yaitu Fungsi Tujuan/Utama & nilai
pembatas (constrain)
Proses Kerja Metode Greedy :
n j
dan Optimal Storage = D(I) = Σ Σ lik
j=1
k=1
Contoh,
Misal terdapat 3 buah prg.(n=3) yg masing2
mpy panjang prg. (I1,I2,I3)=(5,10,3).
Tentukan urutan penyimpanannya scr
berurutan (sequential) agar optimal....!
Penyelesaiannya :
Dari 3 program tersebut akan didapat 6
buah kemungkinan order, yg didapat dr
nilai faktorial 3 3! (ingat faktorial n!).
ORDERING D(I)
1,2,3 5 + (5+10) + (5+10+3) = 38
1,3,2 5 + (5+3) + (5+3+10) = 31
2,1,3 10 + (10+5) + (10+5+3) = 43
2,3,1 10 + (10+3) + (10+3+5) = 41
3,1,2 3 + (3+5) + (3+5+10) = 29
3,2,1 3 + (3+10) + (3+10+5) = 34
Dari tabel tersebut, didapat Susunan /
order yg optimal,sbb :
susunan pertama untuk program ke tiga
susunan kedua untuk program kesatu
susunan ketiga untuk program kedua
METODE GREEDY (lanjutan)
2. KNAPSACK Problem
Kasus : Terdapat n obyek (Xi;i=1,2,3,....n)
yang masing-masing mempunyai berat
(weight)/ Wi & masing-masing memiliki nilai
(profit)/Pi yg berbeda-beda.
Masalah :
Bagamana obyek-obyek tersebut dimuat /
dimasukan kedalam ransel (knapsack) yg
mempunyai kapasitas maks. = M. Sehingga
timbul permasalahan sbb:
Bagaimana memilih obyek yg akan dimuat dr
n obyek yg ada sehingga nilai obyek termuat
jumlahnya sesuai dgn kapasitas(≤ M)
Jika semua obyek harus dimuat kedalam
ransel maka berapa bagian dr setiap obyek yg
ada dapat dimuat kedalam ransel sedemikian
shg nilai kum. maks. & sesuai dgn kapasitas
ransel ?
Penyelesaian Knapsack Problem :
1. Dengan Secara Matematika
2. Dengan Kriteria Greedy.
3. Dengan Algoritma Pemrograman Greedy.
Penyelesaian Knapsack Dengan Secara
Matematika
( 0, 2/3, 1) 20 31.0
Wi Min
Pi/Wi max ( 0, 1, 1/2 ) 20 31.5
x(1:n) 0 ; isi 20 ; i = 1
W(i) > isi ? 15 > 20 ? kondisi SALAH
x(1) = 1 b’arti bhw brg tsb dpt dimuat seluruhnya.
Isi = 20 - 15 kapasitas ransel b’kurang dgn sisa 5kg
i =2
W(2) > isi ?? 10 > 5 ?? kondisi BENAR
x(2)=5/10=1/2benda 10kg hanya dpt dimuat 1/2 bgn
yaitu 5 kg.
i=3
Endif diakhiri krn ransel sdh penuh (max =20kg)
8 7 10
1 2
12 9
11 9
11 5 10
8 3
4
1 2
12
8 5
10
4 3
8
2. MINIMUM SPANNING TREE
Kasus MST Problem = m’cari min.biaya (cost) spanning
tree dr setiap ruas (edge) graph yg m’btk pohon (tree).
Solusi dr p’masalah’ ini :
a. Dgn memilih ruas suatu graph yg memenuhi kriteria dr
optimisasi yg m’hasilk’ biaya min.
b. Penambah’ dr setiap ruas pd seluruh ruas yg m’btk
graph akan m’hasilk’ nilai/biaya yg kecil (minimum
cost).
A 50 B 10 E
10 20 15 20 35
30
C D F
15 3
Penyelesaian:
1. PEWARNAAN ( COLORING )
D
B
E
A
Permasalahan :
Menentukan pola lampu lalulintas dengan jumlah
fase minimal, dan pada setiap fase tidak ada perjalanan
yang saling melintas . Perjalanan yang diperbolehkan
adalah : A ke B, A ke C, A ke D, B ke C, B ke D, E ke B,
E ke C dan E ke D
Langkah-langkah penyelesaian masalah :
1. Tentukan simpul dari perjalanan yang diperbolehkan
( untuk peletakan simpulnya bebas )
2.Tentukan ruas untuk menghubungkan 2 simpul yg
menyatakan 2 perjalanan yg saling melintas
AC BD EB
AB BC EC
AD
ED
3. Beri warna pada setiap simpul dengan warna
warna baru.
- Bila Simpul berdampingan maka berilah warna
lain.
- Bila simpul tidak bedampingan maka berilah
warna yang sama
H
P AC BD EB H
AB BC EC M
AD
P ED
4. Kita lihat Bahwa simpul AB , BC dan ED tidak
dihubungkan oleh suatu ruas jadi untuk simpul tersebut
tidak pernah melintas perjalanan-perjalanan lain dan
simpul tersebut selalu berlaku lampu hijau
Fase 2:
20 % Absensi
25% Tugas & Quiz
25% UTS
30% UAS
PERTEMUAN 1
PENGERTIAN DASAR
LOGIKA DAN ALGORITMA
PENGERTIAN DASAR
LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)
ALGORITMA
Diperkenalkan Oleh Ahli Matematika : Abu Ja’far
Muhammad Ibnu Musa Al Khawarizmi.
Seorang ilmuwan Persia yang menulis kitab al jabr w’al
muqabala (rules of restoration and reduction) sekitar
tahun 825 M
LOGIKA DAN ALGORITMA
Definisi Logika
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus
diikuti agar dapat berfikir valid menurut aturan yang
berlaku.
Definisi Algoritma
1. Langkah - langkah yang dilakukan agar solusi
masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-
langkah yg berintegrasi.
3. Suatu metode khusus yang digunakan untuk
menyelesaikan suatu masalah yang
nyata.(Webster Dictionary)
TAHAP PENYELESAIAN MASALAH
Masalah
Analisis Model
Algoritma Analisis
Analisis Program
Eksekusi
Data
Hasil
Kriteria Pemilihan Algoritma
1. Ada Output,
2. Efektifitas dan Efesiensi,
3. Jumlah Langkahnya Berhingga,
4. Berakhir, ( SEMI ALGORITMA )
5. Terstruktur,
b. Fase Profilling
yaitu fase yang akan bekerja jika program tersebut
sudah benar (telah melewati fase debugging).
Contoh Fase Debugging
#include<conio.h>
#include<iostream.h>
main()
{
int a,t,l; //pendeklarasian variabel
clrscr();
cout<<"Masukan nilai Alas : ";
//masukkan nilai alas
cin>>a;
cout<<"Masukan nilai Tinggi : ";
//masukan nilai tinggi
cin>>t;
l=(a*t)/2; //perhitungan luas
cout<<"Total Luas :"<<l<<endl; //hasil
perhitungan luas
getch(); }
Analisa Suatu Algortima
KONSEP ALGORITMA
&
TIPE DATA
KONSEP ALGORITMA
1. ALGORITMA PE-UBAH
Adalah Variabel yang nilainya BUKAN konstanta (selalu
berubah – sesuai dengan kondisi Variabel terKINI)
Sintaks : P=Q
Algoritma : PQ
Arti : Bahwa Nilai P diberi harga Nilai Q
Nilai P akan SAMA DENGAN nilai Q, & Nilai Q TETAP
2. ALGORITMA PERTUKARAN
Berfungsi mempertukarkan masing-masing isi Variabel
sedemikian sehingga Nilai dari tiap Variabel akan
berubah/bertukar
Contoh Soal:
1. Diketahui P=0, Q=5 dan R=10.
Diberikan Algoritma P=Q,Q=R, mk Nilai P,Q,R
sekarang?
b.
c.
d.
5. Algoritma Pertukaran Isi Bejana
Untuk Latihan Uji Coba Pertukaran Mahasiswa Membawa
2 Gelas air yang berbeda warnanya dan 1 gelas Kosong
Bejana A Bejana B
LANJUTAN
Keadaan Awal Sebelum Pertukaran:
PROSES
tipe data
Konstanta :
Sebuah variabel dengan tipe data tertentu dan memiliki
nilai data yang akan selalu tetap di dalam program.
1. Tipe int :
Tipe data yang nilainya tidak memiliki titik desimal.
Operator ARTI
Aritmatik &
Matematik
pow pemangkatan
sqrt Menghitung akar
% Sisa hasil bagi (modulus)
* , / Perkalian, Pembagian
+ , - Penjumlahan,
Pengurangan
* Dosen diharapkan memberikan contoh penerapan operator
Aritmatika & Matematika
Lanjutan Operator Aritmatik & Matematik
Operator Keterangan
= Sama dengan (assignment)
!= Tidak sama dengan
> Lebih besar
< Lebih kecil
== Sama dengan (bukan assignment)
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
* Dosen diharapkan memberikan contoh penerapan operator
Aritmatika & Matematika
3. Tipe Bool
Nilai pengambilan suatu keputusan pada program, tipe
ini mempunyai 2 nilai yaitu benar(T) atau salah (F).
Operator yg digunakan AND, OR atau NOT.
Input NOT (!) AND (&&) OR (||)
A B C !A !B !C A&&B&&C A||B||C
0 0 0 1 1 1 0 0
0 0 1 1 1 0 0 1
0 1 0 1 0 1 0 1
0 1 1 1 0 0 0 1
1 0 0 0 1 1 0 1
1 0 1 0 1 0 0 1
1 1 0 0 0 1 0 1
1 1 1 0 0 0 1 1
4. Tipe Char
Digunakan untuk menampung data sebuah karakter.
untuk menuliskan tipe char, karakter perlu ditulis
di dalam tanda petik tunggal ( ‘ )
Contoh :
‘A’ karakter berupa huruf A
‘1’ karakter berupa angka 1
‘*’ karakter simbol *
II. Tipe String
Merupakan sekumpulan dari beberapa karakter, yang
banyaknya berubah-ubah sesuai kebutuhan,besarnya 1
s/d 255 karakter.
Catatan :
- Pergunakan fungsi cin dan cout atau scanf dan printf
- Tampilkan NIM, Nama & Kelas pada program tersebut
- Listing progam & output dicetak
PERTEMUAN 3
FLOWCHART
DIAGRAM ALUR (FLOWCHART)
Adalah suatu diagram yang menggambarkan susunan logika suatu
program
Masukan
Alas
Masukan
Tinggi
Cetak
Luas
Stop
Lanjutan Struktur Flowchart
2. Struktur Branching
Digunakan untuk program
yang menggunakan pemilihan
atau penyeleksian kondisi
(contoh menentukan bilangan
genap/ganjil)
Menentukan Bilangan Genap/Ganjil
Pseuducodenya:
1. Masukkan sebuah bilangan
2. Bagi bilangan tersebut dengan 2
3. Jika sisa pembagian = 0 maka bilangan
tersebut adalah bilangan genap
4. Jika sisa pembagian = 1 maka bilangan
tersebut adalah bilangan ganjil
Lanjutan Menentukan bil Genap/Ganjil
Algoritmanya:
read bilangan
If bil mod 2 = 0 then
“Bilangan Genap”
Else
“Bilangan Ganjil”
Flowchart Bilangan Genap/Ganjil
Lanjutan Struktur Flowchart
3. Stuktur Looping
Digunakan untuk program yang instruksinya akan
dieksekusi berulang-ulang.
(Akan dijelaskan pada pertemuan 5)
Menentukan Bilangan Terbesar dari 3
Bilangan yang di Inputkan
Algoritmanya:
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Masukkan bilangan ketiga
4. Jika b1 > b2 dan b1 > b3 maka cetak “ Bilangan
Pertama adalah Bilangan Terbesar”
5. Jika b2 > b1 dan b2 > b3 maka cetak “ Bilangan
Kedua adalah Bilangan Terbesar”
6. Cetak “Bilangan Ketiga adalah Bilangan
Terbesar”
Flowchart Menentukan Bilangan
Terbesar
Latihan 1
Berapakah nilai angka
yang tercetak pada
flowchart ini
Latihan 2
Berapakah nilai n yang
tercetak pada
flowchart ini
Latihan 3
Berapakah nilai Mulai
akhir pencacah
pada flowchart ini pencacah
0
pencacah T
< 12
pencacah
pencacah + 4
Selesai
Latihan 4
Berapakah nilai
bil yang terakhir
kali ditampilkan
berdasarkan
flowchart ini
Latihan 5
Apa yang salah
pada flowchart
perulangan ini?
Tugas
1. Diketahui empat bilangan o, p, q, dan r. Buatlah
flowchart/diagram alir untuk mendapatkan nilai terbesar
diantara keempat bilangan tersebut
2. Buatlah flowchart/diagram alir untuk mengitung N suku
pada deret berikut:
a. S = 1 + 3 + 5 + 7 + 9 + ...
b. S = 2 + 5 + 10 + 17 + 26 + ...
c. S = 1 – 2 + 3 – 4 + 5 – 6 + 7 -...
Tugas Lanjutan
3. Buatlah
algoritma dari
flowchart ini
PERTEMUAN 4
STRUKTUR BRANCHING
STRUKTUR BRANCHING (Percabangan)
A. Bersyarat
1. IF
2. IF......ELSE
3. NESTED IF atau IF ELSE Majemuk
4. SWITCH.....CASE
B. Tidak Bersyarat
Goto
A. Bersyarat
1. IF
Diagram yg alurnya ada/banyak terjadi alih kontrol
berupa percabangan & terjadi apabila kita dihadapkan
pada suatu Kondisi dengan dua pilihan BENAR/ SALAH.
Bentuk Umum :
if (kondisi)
pernyataan ;
Struktur Branching/percabangan:
y
t
Lanjutan
2. IF ...... ELSE
Bentuk umum :
if (kondisi)
perintah1;
else
perintah 2;
Diagram alur dr pemakaian
IF......ELSE sbb:
Lanjutan
3. Nested IF
Pernyataan if yang berada dalam pernyataan if yang lain
Bentuk umum :
if (syarat)
if (syarat)
....perintah;
else
....perintah;
else
if (syarat)
....perintah;
else
....perintah;
Lanjutan
IF.....ELSE Majemuk (bertingkat)
If-else majemuk mirip dengan nested if. Keuntungan
penggunaan if-else majemuk adalah bentuk penulisan
yang lebih sederhana.
Bentuk umum : kondisi1 perintah
if (syarat)
{
... Perintah; }
kondisi2 perintah
else if (syarat)
{
... Perintah; }
else kondisi3 perintah
{
... Perintah; }
perintah
4. Switch Case
Untuk menangani pengambilan keputusan yang melibatkan sejumlah
atau banyak alternatif.
Bentuk Umum :
switch (ekspresi integer atau karakter)
{
case konstanta1:
...perintah;
break;
case konstanta2:
...perintah;
break;
default :
...perintah;
break; }
Lanjutan
B. Tidak Bersyarat
Go To
Bentuk umum :
goto label;
Contoh :
Hitung : statement;
statement;
statement;
statement;
Goto hitung;
Contoh Program Sederhana Menggunakan Percabangan
main()
{
int nilai;
printf("Masukan nilai : ");scanf("%d",&nilai);
if(nilai>70)
printf("Lulus\n");
else
printf("Tidak lulus\n");
}
Contoh 2 IF...ELSE
main ()
{
double tot_beli,diskon=0,jum_bayar;
clrscr();
cout<<" Total Pembelian Rp. "; cin>>tot_beli;
if (tot_beli>=50000)
diskon=0.2 * tot_beli;
else
diskon=0.05*tot_beli;
cout<<"\n\n Besarnya Potongan Rp.
"<<diskon<<endl;
jum_bayar=tot_beli-diskon;
cout<<"\n\n jumlah yang harus dibayarkan Rp.
"<<jum_bayar; getch(); }
Latihan 1:
Buatkan algoritma dengan membuat program untuk kasus
mahasiswa bisa dinyatakan lulus dalam matakuliah logika
algoritma dengan ketentuan jika grade A s/d C dinyatakan
lulus selain itu tidak lulus.
Untuk mendapatkan grade diperoleh dari nilai 20%
absensi, 25% tugas, 25% UTS dan 30% UAS
TUGAS KELOMPOK
LOOPING/
PERULANGAN
LOOPING
Instruksi pengulangan (repetition) adalah instruksi yang
dapat mengulangi pelaksanaan sederetan instruksi lain
berulangkali sesuai dengan persyaratan yang ditentukan.
Struktur instruksi perulangan pada dasarnya terdiri atas:
1. Kondisi perulangan. Suatu kondisi yang harus dipenuhi
agar perulangan dapat terjadi
2. Badan (body) perulangan. Deretan instruksi yang akan
diulang-ulang pelaksanaannya
3. Pencacah (counter) perulangan. Suatu variabel yang
nilainya harus berubah agar perulangan dapat terjadi
dan pada akhirnya membatasi jumlah perulangan yang
dapat dilaksanakan.
Tiga macam bentuk perulangan
1. Perulangan While
Perulangan yang akan terus dilaksanakan selama
syarat terpenuhi.
2. Perulangan For
Perulangan berdasarkan variabel perulangan mulai
dari nilai awal hingga nilai akhir dengan perubahan
nilai sebesar n
3. Perulangan Do – While
Perulangan akan dilaksanakan terlebih dahulu dan
pengujian perulangan dilakukan belakangan.
1. Perulangan While
Perulangan akan terus dilaksanakan selama syarat
tersebut terpenuhi.
Bentuk Umum :
while (kondisi)
pernyataan ;
atau
while (kondisi)
{
pernyataan;
pernyataan;
}
Lanjutan Perulangan While
1. Ada instruksi yang berkaitan dengan kondisi sebelum
masuk ke while sehingga kondisi ini benar (terpenuhi)
dan pengulangan bisa dilaksanakan.
2. Ada suatu instruksi di antara instruksi-instruksi yang
diulang yang mengubah nilai variabel perulangan agar
pada saat kondisi perulangan tidak terpenuhi sehingga
perulangan berhenti.
Algoritma while untuk menampilkan
angka 1 hingga 100
Algoritma Perulangan_while
{mencetak angka 1 hingga 100}
Deklarasi
int angka;
Deskripsi
angka 1;
while (angka < 101)
cout<< angka;
angka angka + 1;
Algoritma While Mencetak Kata
“ Belajar Logika Algoritma” sebanyak 5 kali
Algoritma_While
Int bil=1;
While(bil<=5)
cout<<“Belajar Logika Algoritma”;
bil = bil+1;
2. PERULANGAN FOR
Bentuk Umum :
For (inisialisasi; syarat pengulangan; pengubah nilai)
Instruksi;
Instruksi;
Inisialisasi adalah sebagai nilai awal
Syarat pengulangan adalah instruksi yang akan
dilaksanakan selama syarat memenuhi
Pengubah nilai mengatur naik/turunnya nilai syarat
pengulangan
Flowchart Perulangan For
Inisialisasi awal
Syarat pengulangan
Pengubah nilai
Algoritma Perulangan for untuk
mencetak bilangan 1 sampai 10
Deklarasi
int i;
Deskripsi
for (i=1; i<=10; i++)
cout<<“\n bilangan : “<<i;
Algoritma Perulangan for untuk
mencetak bilangan menurun
Deklarasi
int i;
Deskripsi
for (i=10; i>1; i--)
cout<<“\n Bilangan : “<<i;
3. Perulangan Do….While
Perulangan akan dilaksanakan terlebih dahulu dan
pengujian perulangan dilakukan belakangan.
Bentuk Umum :
do instruksi-
instruksi
pernyataan;
while (syarat);
N
Atau kondisi
do
Y
{ pernyataan;
pernyataan; }
while (syarat)
Perulangan Do - While
1. Instruksi-insruksi akan diulang hanya apabila kondisi
tidak terpenuhi, dan ketika kondisi terpenuhi maka
perulangan berhenti.
2. Instruksi-instruksi dikerjakan terlebih dahulu sebelum
kondisi diperiksa.
3. Harus ada instruksi yang mendahului agar kondisi tidak
terpenuhi sehingga perulangan bisa berlangsung.
4. Harus ada intruksi diantara instruksi yang diulang
sehingga pada akhirnya dapat mengubah kondisi
menjadi terpenuhi dan perulangan berhenti.
5. Apabila di awal pelaksanaan kondisi sudah terpenuhi
maka instruksi-instruksi paling tidak dikerjakan satu kali.
PERULANGAN DO ... WHILE
LANJUTAN
Output : 2 4 6 8 10
Buatlah Algoritma untuk menampilkan kata Logika
Algoritma sebanyak 10 kali dengan penambahan 1.
main()
{ int counter;
counter =0;
do
{
printf (“Logika Algoritma \n");
counter++;
}
while (counter < 11); }
Perintah BREAK;
Berfungsi untuk keluar dari suatu loop for, do...while, while.
Bentuk Umumnya adalah:
{
......
......
break;
......
......
}
.......
Listing Program, sbb:
void main()
{ int n, t;
t=0;
while (1)
{ scanf("%i",&n);
t=t+n;
if (t >= 100)
break; }
printf("%i",t); }
STRUKTUR REKURSIF
STRUKTUR REKURSIF
a. Fungsi pangkat
b. Faktorial
c. Fibonancy
d. Menara Hanoi
Fungsi Pangkat
Menghitung 10 pangkat n dengan menggunakan konsep
rekursif.
Contoh :
10 3 = 10 * 10 2
10 2 = 10 * 10 1
10 1 = 10 * 10 0
10 0 = 1
Faktorial
0! = 1
N! = N x (N-1)! Untuk N > 0
FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Nilai Awal
Misal :
hitung 5!, maka dapat dilakukan secara rekursif
dgn cara :
5! = 5 * 4!
Contoh :
Fibo(5) = Fibo(4) + Fibo(3)
Fibo(4) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1)
Nilai Awal
Algoritma Deret Fibonancy
A[1] = 1;
A[2] = 2;
For (i=3; i<=10; i++)
{
A[i] = A[i-1] + A[i-2];
}
Konsep Menara Hanoi
A B C
Tiang Asal Tiang Bantuan Tiang Tujuan
Menara (n,asal,bantu,tujuan)
N = Jumlah Piringan
Latihan Individu
Contoh:
int nilai [6];
jumlah elemen
nama array
tipe data elemen array
2. Array Berdimensi Dua
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
Contoh:
int nilai [2] [3] ;
jumlah kolom
jumlah baris
nama array
tipe data elemen array
Contoh I :
int i, j ;
int tabel [3] [2] ;
for (i=0; i<=2 ; i++)
{
for (j=0; j<=1 ; j++)
{
cout<< “data ke - ”<< i << j<<endl;
cout<< “nilai =“ ;
cin>> tabel [ i ] [ j ];
}
} Tabel[0][0] Tabel[0][1]
Tabel[2][0] Tabel[2][1]
Contoh II :
Diberikan matriks A sebagai berikut :
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
Solusi Optimal
SORTING
1. Metode Selection Sort
2. Metode Buble Sort
3. Metode Merge Sort
4. Metode Quick Sort
5. Metode Insertion.
Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8 2
Langkah 3 : 2 10 15 3 8 22
Langkah 4 : Ulangi langkah 2 dan 3 .
Iterasi 2
Langkah 1: 2 10 15 3 8 22
Langkah 2: 2 10 15 3 8 22
Langkah 3: 2 3 15 10 8 22
Langkah 4: Ulangi langkah 2 dan 3 .
Hasil iterasi 1 : 2 22 10 15 3 8
Iterasi 2
Langkah 1 : 2 22 10 15 3 8
Langkah 2 : 2 22 10 15 3 8
- 8>3, maka 8 tidak pindah,
untuk selanjutnya bandingkan data
sebelumnya yaitu 3.
Langkah 3 : 2 22 10 3 15 8
Langkah 4 : Ulangi langkah 2 dan 3
Hasil Iterasi 2 : 2 3 22 10 15 8
Lakukan Iterasi selanjutnya sampai iterasi ke- 6
QuickSort
Metode QuickSort sering disebut metode partition
exchange sort, Diperkenalkan oleh C.A.R. Hoare. Pada
metode ini jarak kedua elemen yang akan ditukarkan
nilainya ditentukan cukup besar.
Misal ada N elemen dalam keadaan urut turun, adalah
mungkin untuk mengurutkan N elemen tersebut dengan
N/2 kali, yakni pertama kali menukarkan elemen paling kiri
dengan paling kanan, kemudian secara bertahap menuju
ke elemen yang ada di tengah. Tetapi hal ini hanya bisa
dilakukan jika kita tahu pasti bahwa urutannya adalah urut
turun.
Secara garis besar metode ini dijelaskan sebagai berikut,
misal kita akan mengurutkan vektor A yang mempunyai N
elemen. Kita pilih sembarang dari vektor tersebut, biasanya
elemen pertama misalnya X. kemudian semua elemen
tersebut disusun dengan menempatkan X pada posisi J
sedemikian rupa sehingga elemen ke 1 sampai ke j-1
mempunyai nilai lebih kecil dari X dan elemen ke J+1
sampai ke N mempunyai nilai lebih besar dari X. Dengan
demikian kita mempunyai dua buah subvektor, subvektor
pertama nilai elemennya lebih keci dari X, subvektor kedua
nilai elemennya lebih besar dari X.
Pada langkah berikutnya, proses diatas diulang pada
kedua subvektor, sehingga kita akan mempunyai empat
subvektor. Proses diatas diulang pada setiap subvektor
sehingga seluruh vektor semua elemennya menjadi
terurutkan.
Contoh:
INSERTION SORT
Prinsip dasar Insertion adalah secara berulang-ulang
menyisipkan / memasukan setiap elemen. ke dlm
posisinya / tempatnya yg benar.
Langkah 1: 10 22 15 3 8 2
Langkah 2: 10 15 22 3 8 2
Langkah 3: 10 15 22 3 8 2
Langkah 4: Ulangi langkah 2 dan 3
Lakukan Iterasi selanjutnya sampai iterasi
ke- 6
Catatan : Setiap ada pemindahan, maka elemen.
Yang sudah ada akan di insert sehingga akan
bergeser kebelakang.
MERGE SORT
Prinsip Kerja Merge Sort adalah :
• Kelompokan deret bilangan kedalam 2 bagian,
4 bagian, 8 bagian, ......dst (2n)
• Urutkan secara langsung bilangan dalam
kelompok tsb.
• Lakukan langkah diatas untuk kondisi bilangan
yg lain sampai didapatkan urutan yg optimal .
Contoh : 22 10 15 3 8 2
Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 10 22 3 15 2 8
Iterasi 2
Langkah 1 : 10 22 3 15 2 8
Langkah 2 : 3 10 15 22 2 8
Iterasi 3
Langkah 1 : 3 10 15 22 2 8
Langkah 2 : 2 3 8 10 15 22
Latihan Soal
Ket :
• Masing-masing kelompok dapat memilih salah satu
dari metode sorting.
• sebutkan nim, nama, kelompok dan kelas secara
jelas pada video editingnya.
PERTEMUAN 11
TEHNIK SEARCHING
TEHNIK SEARCHING
1. Tehnik Pencarian Tunggal :
a. Tehnik Sequential Search / Linier Search
b. Tehnik Binary Search
L = 1, H = 15 , X = 25
L <= H, 1 <= 15 , maka
Mid = ( L + H ) Div 2 = ( 1 + 15 ) Div 2
Mid = 8
X < Mid
25 < 56 , maka H = Mid – 1 à = 8 - 1
H=7
L <= H à 1 <= 7 ,
maka Mid = ( L + H ) Div 2 = ( 1 + 7 ) Div 2
Mid = 4
X = Mid
25 = 25 , maka pencarian selesai.
1,5 6,9
1,2 3,3
Lalu Proses tree call dr setiap elemen yg ditunjuk pada
bagan tree tersebut diatas. Dengan cara, membalik
terlebih dahulu posisi tree dr bawah ke atas. Lalu
mengisinya dengan elemen-elemnnya sesuai dengan
bagan tree. Perhatikan bagan tree call ini :
1,2 22,13 3,3 -5,-5
6,9 60,17
1,5 22,-8
1,9 60,-8
PERTEMUAN 12
METODE GREEDY
METODE GREEDY
n j
dan Optimal Storage = D(I) = Σ Σ lik
j=1
k=1
Contoh,
Misal terdapat 3 buah prg.(n=3) yg masing2
mpy panjang prg. (I1,I2,I3)=(5,10,3).
Tentukan urutan penyimpanannya scr
berurutan (sequential) agar optimal....!
Penyelesaiannya :
Dari 3 program tersebut akan didapat 6
buah kemungkinan order, yg didapat dr
nilai faktorial 3 3! (ingat faktorial n!).
ORDERING D(I)
1,2,3 5 + (5+10) + (5+10+3) = 38
1,3,2 5 + (5+3) + (5+3+10) = 31
2,1,3 10 + (10+5) + (10+5+3) = 43
2,3,1 10 + (10+3) + (10+3+5) = 41
3,1,2 3 + (3+5) + (3+5+10) = 29
3,2,1 3 + (3+10) + (3+10+5) = 34
Dari tabel tersebut, didapat Susunan /
order yg optimal,sbb :
susunan pertama untuk program ke tiga
susunan kedua untuk program kesatu
susunan ketiga untuk program kedua
Latihan Soal
Terdapat 7 Buah Program (N=7) yang masing-
masing mempunya panjang program (L1=10 ,
L2=3 , L3=9 , L4= 12 , L5=20 , L6=7 , L7=11),
Dengan metoda Optimal Storage Ontapes
Problem , tentukan Order yang paling optimal
METODE GREEDY (lanjutan)
2. KNAPSACK Problem
Kasus : Terdapat n obyek (Xi;i=1,2,3,....n)
yang masing-masing mempunyai berat
(weight)/ Wi & masing-masing memiliki nilai
(profit)/Pi yg berbeda-beda.
Masalah :
Masalah :
Bagamana obyek-obyek tersebut dimuat /
dimasukan kedalam ransel (knapsack) yg
mempunyai kapasitas maks. = M. Sehingga
timbul permasalahan sbb:
Bagaimana memilih obyek yg akan dimuat dr
n obyek yg ada sehingga nilai obyek termuat
jumlahnya sesuai dgn kapasitas(≤ M)
Jika semua obyek harus dimuat kedalam
ransel maka berapa bagian dr setiap obyek yg
ada dapat dimuat kedalam ransel sedemikian
shg nilai kum. maks. & sesuai dgn kapasitas
ransel ?
Penyelesaian Knapsack Problem :
1. Dengan Secara Matematika
2. Dengan Kriteria Greedy.
3. Dengan Algoritma Pemrograman Greedy.
Penyelesaian Knapsack Dengan Secara
Matematika
( 0, 2/3, 1) 20 31.0
Wi Min
Pi/Wi max ( 0, 1, 1/2 ) 20 31.5
Penyelesaian Dengan
Algoritma Pemrograman
Greedy.
Penyelesaian Dengan Algoritma
Pemrograman Greedy.
Algoritma GREEDY KNAPSACK.
PROCEDURE GREEDY KNAPSACK ( W, x, n)
float W[n], x[n], M, isi;
Int i, n;
x(1 : 1) 0 ; isi M ;
FOR i 1 TO n
{ IF W[i] > M ; EXIT ENDIF
x[i] 1
isi isi – W[i] }
IF i ≤ n ; x[i] isi / W[i] ENDIF
END_GREEDY KNAPSACK
Efektif jk data (Pi/Wi) disusun scr non decreasing dahulu.
Penyelesaiannya : Dengan Algoritma Prg. Greedy.
8 7 10
1 2
12 9
11 9
11 5 10
8 3
4
1 2
12
8 5
10
4 3
8
Latihan Soal
Terdapat 4 kota yaitu ABCDE,
Jarak Antar Kota A, B, C, dan D sebagai berikut:
jarak A ke B = 7, A ke C = 5, A ke D = 3, B ke C =
6, B ke D = 6 dan C ke D = 2.
7
A
B
Grafnya dapat dilihat dibawah ini.
5 6
Kota Pusat : A 6 3
C D
2
A 50 B 10 E
10 20 15 20 35
30
C D F
15 3
Penyelesaian:
Jalur Panjang jarak
A–C 10
A–C–D 25
A–C–D–B 45
A–E 45
PERTEMUAN 14
Pewarnaan (Coloring)
PROBLEMA DAN MODEL GRAPH DALAM
METODE GREEDY
1. PEWARNAAN (COLORING)
D
B
E
A
Permasalahan :
Menentukan pola lampu lalulintas dengan jumlah
fase minimal, dan pada setiap fase tidak ada perjalanan
yang saling melintas . Perjalanan yang diperbolehkan
adalah : A ke B, A ke C, A ke D, B ke C, B ke D, E ke B,
E ke C dan E ke D
Langkah-langkah penyelesaian masalah :
1. Tentukan simpul dari perjalanan yang diperbolehkan
( untuk peletakan simpulnya bebas )
2.Tentukan ruas untuk menghubungkan 2 simpul yg
menyatakan 2 perjalanan yg saling melintas
AC BD EB
AB BC EC
AD
ED
3. Beri warna pada setiap simpul dengan warna
warna baru.
- Bila Simpul berdampingan maka berilah warna
lain.
- Bila simpul tidak bedampingan maka berilah
warna yang sama
H
P AC BD EB H
AB BC EC M
AD
P ED
4. Kita lihat Bahwa simpul AB , BC dan ED tidak
dihubungkan oleh suatu ruas jadi untuk simpul tersebut
tidak pernah melintas perjalanan-perjalanan lain dan
simpul tersebut selalu berlaku lampu hijau
Fase 2: