Minggu, 14 Juli 2013

Aplikasi Induksi Matematik dalam program


B. Aplikasi Induksi Matematik dalam program

Salah satu aplikasi induksi matematik dalam pemrograman yaitu bentuk kalang (loop), dengan struktur sbb :
Keadaan sebelum menjumpai kalang( loop)

While s

Perintah-perintah dalam tubuh kalang .
semua perintah tidak boleh melompat keluar
kalang

End While
Keadaan setelah kalang(loop)

Perintah While akan dieksekusi terus menerus selama syarat kondisi S bernilai benar. Apabila dalam proses kalang dijumpai kondisi bernilai salah (tidak memenuhi syarat yang didefinisikan) eksekusi akan berhenti.
Kalang (loop)
Diberikan Kalang While dengan syarat kondisi S, kondisi sebelum dan sesudah kalang. Jika diberikan predikat I(n) yang disebut kalang invarian.
Apabila keempat syarat ini benar maka kalang benar terhadap kondisi sebelum dan sesudahnya.

1. Langkah basis :
Kondisi sebelum kalang berarti bahwa I (0) benar sebelum iterasi pertama dalam kalang.
2. Langkah induksi :
Jika syarat kondisi S dan kalang invariant I(k) benar untuk suatu bilangan bulat k ≥ 0 sebelum iterasi kalang, maka I(k+1) juga benar setelah iterasi kalang.

3. Kondisi penghentian Setelah sejumlah iterasi kalang yang berhingga, maka syarat kondisi S menjadi salah.

4. Kebenaran kondisi setelah kalang
Jika untuk suatu bilangan bulat tak negatif N, syarat kondisi S salah dan I(N) benar maka harga variable akan sama dengan yang ditentukan dalam kondisi kalang.( tanpa menggunakan operasi perkalian langsung).
Contoh 3
Akan dihitung hasil kali dua buah bilangan bulat positip, atau nilai nol c dan d, dengan tanpa melalui operasi perkalian langsung. Berikut ini potongan algoritma pemrograman untuk menghitung hasil kali dua bilangan bulat tersebut, dengan cara menjumlahkan d sebanyak c kali yang hasilnya c.d sbb :
i ← 0
J ← 0
while i ≠ c do (1)
J ← J + d
i ← i+ 1
endwhile
( i = c, J = c.d )
Buktikan bahwa setiap kali eksekusi mencapai awal kalang while-do 1), ditemukan J = i.d.
Bukti :
Algoritma untuk enumerasi nilai i dan j untuk setiap kali eksekusi mencapai awal kalang while - do tersebut dapat diilustrasikan sbb:
Tabel eksekusi while – do

Setiap kali (n) exsekusi mencapai awal loop
Nilai i
Nilai j
Loop ke  1
0
0
2
1
1.d
3
2
2.d
4
3
3.d
:
:
:
C+1
c
c.d

dari tabel tersebut tampak bahwa setiap kali eksekusi algoritma mencapai awal kalang while-do, nilai j = 1.d. Untuk mengetahui kebenaranya dapat digunakan induksi matematik. Misal p(n) merupakan pernyataan bahwa setiap kali yaitu n eksekusi algoritma mencapai awal kalang while – do, nilai i dan j pada eksekusi ke n dinyatakan in dan jn.
a) Langkah 1 .
untuk n = 1, pernyataan p(1) benar karena pada saat n = 1 eksekusi mencapai awal kalang while – do i = 0 dan j = 0, serta nilai jn= in .d = 0 adalah benar.
b) Langkah induksi :
misal pernyataan p(n) benar, dengan asumsi bahwa jn = in .d saat eksekusi mencapai awal kalang while – do. Akan ditunjukkan bahwa p(n+1) benar yaitu saat eksekusi mencapai awal kalang while – do yang ke (n+1) yang berarti jn+1 = in+1 .d juga benar. Dari tabel dapat dilihat bahwa nilai i yang baru bertambah sebesar 1 dari nilai i yang lama dan j yang baru bertambah sebesar d dari nilai j yang lama sehingga in+1 = in + 1
dan jn+1 = jn + d, dari hipotesa induksi jn= in .d maka
jn+1 = (in.d) + d
= (in + 1 ).d
= in+1 .d .
maka terbukti bahwa setiap kali eksekusi algoritma mencapai awal kalang while – do nilai j= i.d.
1.     Prinsip Umum Induksi
Prinsip induksi sederhana dapat digeneralisir
sebagai berikut :

Misal p(n) adalah pernyataan tentang bilangan bulat dan akan membuktikan bahwa pernyataan p(n) benar untuk semua bilangan bulat n ≥ n0 . Untuk membuktikan pernyataan tersebut kita hanya perlu menunjukkan bahwa:

i) p(n0) benar dan
ii) jika p(n) benar maka p(n+1) benar untuk setiap n ≥ n0 , akibatnya pernyataan p(n) benar untuk setiap bilangan bulat n ≥ n0

Tidak ada komentar:

Posting Komentar