Kelompok tugas mata kuliah matematika diskrit terdiri atas 4 mahasiswa yang membahas rekursi, contoh kasus barisan, fungsi, dan himpunan yang didefinisikan secara rekursif serta algoritmanya.
1. TUGAS KELOMPOK MATA KULIAH MATEMATIKA DISKRIT
1. Nida Shafiyanti (3125111218)
2. Puti Febriani N (3125111204)
3. Tedy Triyadi (3125111202)
4. Michael (3125092171)
REKURSIF
DEFINISI
Ada kalanya kita mengalami kesulitan untuk mendefinisikan suatu obyek secara
eksplisit. Namun kita akan lebih mudah untuk mendefinisikan obyek tersebut dengan
menggunakan dirinya sendiri. Proses ini dinamakan rekursif. Sebagai contoh, fungsi
dikatakan rekursif jika definisi fungsinya mengacu pada dirinya sendiri. Kita dapat
menggunakan rekursif untuk mendefinikan barisan, fungsi dan himpunan. Nama lain dari
fungsi rekursif adalah relasi rekursif (recurrence relation).
Fungsi rekursif disusun oleh dua bagiain :
a) Basis
Bagian yang bersi nilai awal yang tidak mengacu pada dirinya sendiri
b) Rekurens
Mendefinisikan argument fungsi dalam terminologi dirinya sendiri. Setiap kali fungsi
mengacu pada dirinya sendiri argument dari fungsi harus leih dekat ke nilai awal (basis)
CONTOH KASUS
A. Barisan Yang Didefinisikan Secara Rekursif
Langkah-langkah untuk mendefinisikan barisan secara rekursif:
a) Langkah basis: Spesifikasi anggota awal.
b) Langkah rekursif: Berikan aturan untuk membangun anggota baru dari anggota
yang telah ada.
2. Contoh Kasus 1:
Berikan definisi rekursif dari an=rn, dengan r N, r≠0 dan n bilangan bulat positif.
Solusi:
Definisikan
dan
untuk
B. Fungsi yang didefinisikan secara rekursif
Langkah-langkah untuk mendefinisikan fungsi dengan domain bilangan cacah:
c) Langkah basis: Definisikan nilai fungsi pada saat nol.
d) Langkah rekursif: Berikan aturan untuk mencari nilai fungsi untuk setiap bilangan
bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil.
Definisi seperti itu disebut rekursif atau definisi induktif.
Contoh Kasus 1:
Bagaimana kita dapat mendefinisikan fungsi faktorial
Karena
secara rekursif?
maka
Contoh Kasus 2:
Bilangan Fibonacci
Solusi:
,
,
, … didefinisikan oleh persamaan
dan
3. C. Himpunan yang didefinisikan secara rekursif
Langkah-langkah dalam mendefinisikan suatu himpunan secara rekursif:
a) Langkah basis: Spesifikasi koleksi awal dari anggota
b) Langkah rekursif : Mendefinisikan aturan konstruksi anggota baru dari anggota
yang telah diketahui
Contoh Kasus 1:
Misalkan S didefinisikan secara rekursif oleh:
jika
dan
Maka S adalah himpunan bilangan bulat positif yang habis dibagi 3.
Bukti:
Misalkan A himpunan yang beranggotakan semua bilangan bulat positif yang habis
dibagi 3.
Untuk membuktikan bahwa
, harus ditunjukkan
and
Bagian I: Akan dibuktikan
, yaitu menunjukkan bahwa setiap bilangan bulat
positif yang habis dibagi 3 ada di S (dengan menggunakan induksi matematika).
4. ALGORITMA
Berikut beberapa algoritma dari beberaa contoh kasus yang diberikan untuk:
A. Rekursif yang mendefinisikan barisan
Ada sekumpulan deret yakni:
Dengan menggunakan metode rekusif, carilah bilangan yang hendak dicari dari tiap
deret tersebut. Bila dimasukkan sebuah bilangan positif, maka bilangan itu menyatakan
posisi bilangan deret ke n. Bilangan pertama menyatakan nilai bilangan ke-n pada deret
pertama, Bilangan kedua menyatakan nilai bilangan ke-n pada deret kedua, Bilangan
ketiga menyatakan nilai bilangan ke-n pada deret ketiga, Bilangan keempat menyatakan
nilai bilangan ke-n pada deret keempat.
Contoh polanya:
Contoh Masukan 1 : 1
Contoh Keluaran 1 : 1 1 1
Contoh Masukan 2 : 5
Contoh Keluaran 2 : 5 16 4
Contoh Masukan 3 : 3
Contoh Keluaran 3 : 3 4 2
Algoritmanya:
cariDeret(A, m, k)//A array yang berisi deret tersebut, m panjang arranya, k deret yang
//hendak dicari
B //menyimpan hasil tiap deret
if(m = k) then //bila panjang array hanya satu makan nilainya adalah isi array itu
return B = A[m]
else if (m < k) then
return 0
else //m akan di kurang 1 terus menerus sampai terpenuhi m = k, kemudian dipanggil
//method cariDeret secara rekursif
return cariDeret(A,m-1,k)
end
5. //method ini dianggap sebagai main yang sekaligus input data yang akan memanggil
//method cariDeret
isiDeret(A,panjang,lebar,cari)//A array 2 dimensi yang merupakan kumpulan dari
berbagai deret
for i←1 to lebar do
for j←1 to panjang do
return cariDeret(A[j],panjang,cari)
B. Rekursif yang mendefinisikan fungsi
Algoritma untuk kasus fungsi faktorial berdasarkan contoh kasus 1 pada bagian B:
factorial(n) //n adalah bilangan factorial yang ke brapa yang hendak dicari
if(n = 0) then // statement akan mengentikan rekursif
return 1
else
return n*factorial(n-1) // memanggil method factorial secara rekursif
// pemanggialan akan terus berlangsung sampai
diperoleh n=1
end
Algoritma untuk kasus fungsi fibonacci berdasarkan contoh kasus 2 pada bagian B:
fib(n) //n adalah bilangan fibonaci yang ke berapa yang hendak dicari
if(n=1) then //statement akan mengentikan rekursif
return n
else
return fib(n-1) + fib(n-2) //memanggil method fib secara rekursif
//pemanggilan akan terus berlangsung sampai
diperoleh n=1
End