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: