Pemrograman Berorientasi Objek

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek.

PBO diciptakan karena masih dirasakan adanya keterbatasan pada bahasa pemrograman tradisional yang dikenal dengan istilah procedural language seperti C, Pascal dan yang sejenisnya.

Konsep PBO adalah bahwa semua pemecahan masalah dibagi ke dalam kelas (class). Dalam PBO data dan fungsi-fungsi yang akan mengoperasikan data digabungkan menjadi satu kesatuan yang bisa disebut sebagai kelas.

Dalam Pemrograman Berorientasi Objek setiap objek akan memiliki data (sifat, berupa variabel maupun konstanta) dan method (perilaku, atau kemampuan untuk melakukan sesuatu, berupa fungsi). Jadi, objek dapat di definisikan sebagai suatu entitas yang memiliki data dan method.

Pemrograman orientasi-objek menekankan konsep berikut:

1. kelas (class) — kumpulan/kelompok data yang mempunyai ciri sama.
Sebagai contoh 'class Tumbuhan' adalah suatu unit yang berisikan tentang data-data (seperti jenis, bentuk, sifat dll) dari tumbuhan dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari Tumbuhan.

Sebuah class adalah inti dalam pemrograman berorientasi object. Sebuah class sebaiknya dapat dikenali oleh seorang non-programmer, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP).


2 Objek - Objek sendiri dapat dikatakan sebagai instance atau perwujudan dari class. misalnya class "tumbuhan" memiliki objek padi, mangga, kelapa dll.

3.Methode
- sedangkan methode sendiri merupakan perilaku, atau kemampuan untuk melakukan sesuatu, berupa fungsi. mislanya class "tumbuhan" objek "padi" mempunyai methode "berfotosintesis", "berkembang biak" dll.

4.Atribut segala sesutu yang menjelaskan objek tersebut. misalnya objek "padi" meiliki Atribut "umur", "jenis daun", jenis akar" dll.
Dalam class atribut disebut sebagai variabel

5. Abstraksi - Abstraksi data adalah mengabstrakkan atau menyamarkan data-data yang ada.
Contoh : jam tangan
o Orang tidak perlu tahu bagaimana cara jam mengatur dan merubah detik kemenit, atau menit ke jam.
o Orang tidak perlu tahu siapa yang bertanggung jawab menggerakkan jarum jam.

6. ENCAPSULATION (Enkapslasi) (menyembunyikan cara kerja dan sistem)
Enkapsulasi adalah penyembunyian detail informasi dan fungsionalitas yang ada pada suatu kelas. Jadi kita tidak perlu mengetahui bagaimana detail dari kelas-kelas tersebut. Yang harus kita ketahui adalah bagaimana cara menggunakan kelas tersebut.
*Contoh: jam tangan
o Penting sekali untuk mengetahui waktu.
o Cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah penting kita ketahui.
* Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari struktur dalam bahasa C.


7. INHERITANCE (Pewarisan)
Pewarisan merupakan sebuah Kelas (Class) yang mewarisi atau menurunkan Attribute (State) dan behaviour dari kelas lain yang sejenis.

Misalnya Kelas yang memberikan turunan Attribute (State) dan behaviour adalah Superkelas, untuk selanjutnya Kelas yang menjadi turunannya adalah Subkelas. Sehingga pada akhirnya Subkelas akan mewarisi apa yang dimiliki oleh Superkelas.

Pewarisan mempunyai beberapa manfaat diantaranya :
1. Superkelas yang sudah kita buat, dapat digunakan kembali dan membuat kelas-kelas baru berdasarkan Superkelas tersebut. Kelas-kelas baru tersebut tentu mempunyai karakteristik yang lebih khusus dari behaviour yang dimiliki oleh Superkelas.
2. Kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode yang ada.

8. POLYMORPHISME
Polymorphisme adalah objek yang dapat memiliki berbagai bentuk yang berbeda, adalah konsep sederhana dalam bahasa pemrograman berorientasi objek yang berarti kemampuan dari suatu variabel referensi objek untuk memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe objeknya.

Polymorphisme terdiri dari Overloading dan Overriding.
• Overloading adalah penggunaan satu nama untuk beberapa method yang berbeda parameter
• Overriding adalah terjadi ketika deklarasi method subclass sama dengan method dari superclass


Contoh dari PBO:
Manusia adalah suatu intentitas yang memiliki data-data (misalnya:nama, jenis kelamin, tinggi badan, berat badan, dll) dan juga method (misalnya: cara bicara, cara berjalan, cara marah, dll)

dari masalah diatas berarti yang merupakan class adalah Manusia, Atributnya adalah nama, jenis kelamin, tinggi badan, berat badan. Sedangkan Methodenya adalah cara bicara, cara berjalan, cara marah, dll.

Instance??

Di dalam pemrograman, suatu objek di abstraksikan ke dalam sebuah kelas. berarti objek tersebut itu masih belum menjadi suatu bentuk yang nyata/rill melainkan hanyalah sebuah abstrak, nah lalu bagaimana membuat suatu bentuk yang nyata dari objek yang abstrak tersebut? yaitu dengan membuat Instance, karena wujud nyata dari suatu kelas disebut instance. contoh: apabila terdapat kelas manusia, maka contoh instance -nya adalah: Aritha, Boy, Joko, Ezri, Marshanda dll.
misalnya kita membuat class "artis" yang mempunyai objek "Marshanda" agar mendapatkan objek yang rill, kita jadikan objek tersebut menjadi instance

misalnya pada java

Artis marshanda = new Artis();


beberapa keuntungan yg di dapat dari model Pemrograman Berorientasi Objek adalah:
- Objek-objeknya dapat digunakan ulang (reuseable) untuk program-program lain
- programnya lebih terstruktur dan lebih mudah untuk dikembangkan
- bersifat natural atau alami, karena perilaku dan sifat-sifat objek di dalam program akan disesuaikan dengan objek-objek nyata yang ada di alam sekitarnya
- Reusabilitas
- Pembangunan program lebih cepat
- Fleksibelitas lebih tinggi
- Ekstensibilitas
- Less Maintenance


Bahasa pemrograman yang mendukung OOP antara lain:

1. Visual Foxpro
2. Java
3. C++
4. Pascal (bahasa pemrograman)
5. Visual Basic.NET
6. SIMULA
7. Smalltalk
8. Ruby
9. Python
10. PHP
11. C#
12. Delphi
13. Eiffel
14. Perl


Referensi:
http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek
http://blogagusalim.blogspot.com/
http://anniepbo.wordpress.com/materi/

Read more.....

Finite State Automata FSA

Finite automata adalah mesin abstrak berupa sistem model matematika dengan masukan dan keluaran diskrit yang dapat mengenali bahasa paling sederhana (bahasa reguler) dan dapat diimplementasikan secara nyata.

FSA didefinisikan sebagai pasangan 5 tupel : (Q, ∑, δ, S, F).

Q : himpunan hingga state
∑ : himpunan hingga simbol input (alfabet)
δ : fungsi transisi, menggambarkan transisi state FSA akibat pembacaan simbol input.
(Fungsi transisi ini biasanya diberikan dalam bentuk tabel.)
S : state AWAL (Start)
F : himpunan state AKHIR (Final)

Contoh : FSA untuk mengecek parity ganjil


Q ={Gnp, Gjl} himpunan state
∑ ={0,1} himpunan simbol input
δ = fungsi transisi,



S = Gnp (Start)
F = {Gjl} (Final) himpunan state AKHIR
(ingat untuk himpunan harus ditulis di dalam {} )

dari diagram tersebut Contoh Bahasa/L(m) yang diterima adalah :
0110 (karena state akhirnya adalah finalnya state, dalam konteks ini adalah Gjl
1011 = diterima
0100 = diterima
11110 =diterima
011 = ditolak (karenan state akhirnya tidak di final state, Gnp)
11011 = ditolak

Implementasi Finite Automata

Sistem dengan state berhingga diterapkan pada:
- Sistem elevator
- Mesin pengeluar minuman kaleng (vending machine)
- Pengatur lampu lalu lintas (traffic light regulator)
- Sirkuit penyaklaran (switching) di komputer dan telekomunikasi
- Protokol komunikasi (communication protocol)
- Analisis Leksikal (Lexical analyzer)
- Neuron nets
- sistem Komputer

Finite State Diagram (FSD)

Finite State Automata dapat dimodelkan dengan Finite State Diagram (FSD) dapat juga disebut State Transition Diagram.

Finite State Diagram terdiri dari:

1. Lingkaran menyatakan state
Lingkaran diberi label sesuai dengan nama state tersebut.

Adapun pembagian lingkaran adalah:
- Lingkaran bergaris tunggal berarti state sementara
- Lingkaran bergaris ganda berarti state akhir

2. Anak Panah menyatakan transisi yang terjadi
Label di anak panah menyatakan simbol yang membuat transisi dari 1 state ke state lain

1 anak panah diberi label start untuk menyatakan awal mula transisi dilakukan

Klasifikasi FSA

Ada dua jenis FSA :
•Deterministic finite automata (DFA)
Terdiri dari 1 transisi dari suatu state pada 1 simbol masukan.

•Non deterministik finite automata.(NFA)

Lebih dari 1 transisi dari suatu state dimungkinkan pada simbol masukan yang sama

Kedua finite automata tersebut mampu mengenali himpunan reguler secara presisi. Dengan demikian kedua finite automata itu dapat mengenali string-string yang ditunjukkan dengan ekspresi reguler secara tepat.

DFA dapat menuntun recognizer(pengenal) lebih cepat dibanding NDFA.

Namun demikian, DFA berukuran lebih besar dibanding NDFA yang ekivalen dengannya.

Lebih mudah membangun NDFA dibanding DFA untuk suatu bahasa, namun lebih mudah mengimplementasikan DFA diabnding NDFA.


sumber: http://www.globalkomputer.com/Bahasan/Teori-Bahasa-dan-Otomata/Topik/Finite-Automata.html
Read more.....

Problem dari Histrografi Islam Asia Tenggara

Dalam menyatakan sejarah masuknya Islam di Asia Tenggara, sedikit medapatkan kesulitan. hal ini dikarenakan tradisi Asia Tenggara yang lebih suka menyampaikan sejarah-sejarah dalam Lisan. hampir tidak ada sejarah yang di tulis dalam bentuk tulisan. maka dari it sangat susah sekali mendeskripsikan sejarah Asia Tenggara mengenai waktu & tempat yang kongkrit.

oleh karena itu kita bersandarkan pada suber-smber sejarah tertulis yang berupa

1. Catatan para pelancong
orang asing yang datang berknjung (melancong) ke Indonesia cendrung mencatat kejadian-kejadian/sejarah yang ada pada Indonesia.
namun kelemahannya : catatan-catatan tesebut masih minim atau masih sedikit. catatannya pun tidak membahas secara mendetail.

2. Catatan-Catatan Sejarah Kolonial

catatan-catatan tersebut berupa annual report yang memberi info lebih baik dari pada catatan-catatan para pelancong. dan catatan tersebut juga selalu update setiap tahunnya.
namun kelemahannya: Belanda membuat annual report pada daerah capital (ibu kota) saja. Belanda tidak mengunjungi daerah-daerah terpencil/pedalaman. jadi tidak dapat mencover keseluruhannya.

3. Hasil Penelitian Orang Barat

Antropolog (orang yang ditugaskan untuk meneliti kebudayaan suatu daeah) diturunkan untuk mempelajari kebudayaan-kebudayaan Indonesia. Antropolog menetap di daerah-daerah terpenil,sehingga data yang di dapat terperinci.
contoh Antropolog : Winstead merupakan antropolog di Malaysia
Clifford Geertz merpakan antropolog dari Jerman yang meneliti Indonesia
kekurangannya : sering sekali orang barat memandang Islam dari kaca mata pandang yang ada dari mereka. sehingga barat memandang Islam Asia Tenggara secara PEYORATIF.

PEYORATIF : Makna yang mengecilkan/tidak yang sebenarnya.

contohnya: pandangan barat family itu adalah ibu, ayah, dan anak. jadi paman, bibi dll tidak termasuk faimly (core family)
contoh lain, dalam pandangan barat, budaya gotong royong tidak ada. maka mereka akan memandang bahwa rakyat Indonesia mau bekerja tanpa dibayar. padahal makna sebenarnnya adalah bekerja sama saling membantu walaupun tanpa di bayar rakyat Indonesia tetap mau bekerja bergotong royong.

Lalu mereka (orang barat) melakukan ORIENTALIZM
Oriental : kajian tentang ketimuran
Orientalizm : semangat untuk mengetahui budaya Asia Tenggara namun mengajari bahkan ingin menguasai.

Read more.....

Karakteristik Islam Asia Tenggara

SIAT (study islam Asia Tenggara)
Ada yang mengatakan Islam Asia Tenggara ini adalah Islam PHERIPERAL yang artinya islam Pinggiran

Lalu ada juga yang menyebutkan Islam Asia Tengara adalah Islam SINGRETIS yang artinya Islam dianggap berlumuran dengan agama-agama sebelumnya (berbaur dengan agama lain).

Islam Asia Tenggara dianggap tipis ke Islamannya karena jauh dari pusatnya (Arab) padahal belum tentu ke islaman di Arab lebih baik dari Islam di Asia Tenggara.

Agama Islam ini adalah Transenden (Ilahiyah)

Padahal sebenarnya agama Islam Asia Tenggara begitu indah. Datang dengan damai, tanpa pertumpahan darah setetes pun.

Karakteristik Islam Asia Tenggara
1. Damai, ketika Islam masuk ke Asia Tenggara dengan jalur damai. Dimana islam masuk secara Penetration (Perlahan-lahan) [lawan kata Penetration adalah Futu]
2. Karena letak geografis Asia Tenggara strategis, sering di kunjungi orang asing, maka Asia Tenggara bersifat terbuka.
3. Karena kondisi geografis/geopolitis, Islam Asia Tenggara bersifat variatif. Misalnya Islam di Indonesia beda dengan Islam di Malaysia, tapi tetap memiliki syariat yang sama.
4. Islam Asia Tenggara mayoritas.
5. Fenomena Islam Pesisir. Islam pesisir adalah Islam agama kota atau disebut juga agama rasional (berfikir). Agama kota adalah agama yang tidak kaku, terbuka, tidak terkonsentrasi pada orangnya, mau menerima perubahan dll. Berbeda dengan islam daratan.

Read more.....

Chinese Room

Apakah mesin mempunyai kecerdasan?
Pertanyaan itu dijawab dan di rumuskan oleh Alan Turing pada tahun 1950-an. Alan Turing adalah seorang matematikawan yang terkenal karena berhasil memecahkan kode rahasia Jerman dalam Perang Dunia II.
Alan Turing membuat sebuah percobaan yang dinamakan Turing test, yang mana secara mendasar, percobaan masih menimbulkan kesangsian manusiawi.

Sebuah komputer melalui terminalnya ditempatkan pada jarak jauh. Pada salah satu ujung, ada terminal dengan software AI dan di ujung lain ada sebuah terminal dengan seorang operator . Operator tidak mengetahui kalau di ujung terminal lain dipasang software AI. Mereka melakukan hubungan dan operator mengira bahwa ia sedang berhubungan dengan operator lainnya pada terminal yang terletak di ujung lain. Apakah dengan demikian komputer bisa dikatakan pintar?
Jadi, Apakah mesin atau komputer dapat berpikir?


jika melihat perkembangan teknologi komputer dan pemograman secara tentatif bisa dibilang bahwa komputer itu telah dapat berpikir, seperti program catur misalnya. Tapi dapatkah ia mensimulasikan sebuah kesadaran bahwa ia adalah sebagai subjek atau individu seperti manusia? Inilah problem yang tampaknya masih belum terselesaikan dalam diskursus AI.

Lalu Problem AI dan kaitannya dengan kesadaran dibahas oleh John R. Searle dalam bukunya The Mystery of Consciousness (1997) dan artikelnya yang berjudul Minds, Brains, and Programs (1980). John Searle melihat bahwa mesin memang dalam arti tertentu mempunyai kecerdasan. Tapi ia melihat bahwa mesin hanya memilikinya secara partikular dan fungsional (Weak AI). Mesin menurutnya tidak dapat mempunyai kesadaran sebagai subjek seperti manusia (Strong AI). Ia menjelaskan hal ini lewat argumen yang dikenal dengan Chinese Room Argument.

Chinese Room Argument merupakan sebuah argumen yang menjelaskan tentang fenomena ketika kita tidak lagi mengetahui secara programatis perbedaan antara mesin dan manusia.

Anggaplah anda hanya bisa berbicara bahasa indonesia. Kemudian, anda berada di satu ruangan terisolasi dan harus menerjemahkan bahasa Cina ke dalam huruf cina yang lain. Dengan kaidah dan prosedur penerjemahan yang sudah diberikan kepada anda, anda mulai mengerjakan penerjemahan dan hasilny dikirimkan ke luar.
Inputnya mungkin berupa pertanyaan dan ouputnya merupakan jawaban. Apakah dengan keberhasilan menerjemahkan, anda sudah bisa dikatakan seorang inteligensia, seorang yang pintar?
Sebaliknya, jika tidak berhasil karena tidak bisa mengikuti kaidah dan prosedur yang sudah ditentukan, apakah anda dikatakan tidak atau kurang pintar, kurang inteligen? Tentu hasil ini masih bisa dipertanyakan.

Selanjutnya, walaupun sudah bisa memberikan jawaban yang benar, apakah anda sudah bisa dikatakan benar-benar mengerti bahasa cina? Tidak, sekalipun anda sudah berhasil mengerjakan sesuatu yang sangat berguna. Demikian pula, komputer yang bekerja dengan aplikasi AI menerjemahkan simbol-simbol pada output yang tepat menurut kaidah dan prosedur yang sudah dirancang.

Bila manusia dikonstitusikan dengan komputer dalam kaitannya dengan fenomena Chinese Room Argument, akan kita temukan kesamaan antara mesin dan manusia, yaitu ia sama-sama sebuah program atau bagian dari program itu sendiri. Namun bila kita telaah lagi akan kita temukan secara tentatif sebuah perbedaan.

Dengan merujuk argumen di atas kita pahami bahwa manusia dan mesin sebagai sebuah program memahami sebatas bentuk, bukan makna. Menurut John Searle dalam bukunya The Mystery of Consciousness, lewat Chinese Room Argument dapat diproposisikan bahwa
“semantik tidak intrinsik berada pada syntax, sehingga syntax tidak bersifat intrinsik terhadap bentuk fisik”. (John Searle, 1997: 17).


Dari sini kita pahami bahwa makna sebuah kata dalam beberapa hal adalah misteri. Karena sebuah komputer atau program dapat memahami bentuk (sintaksis) dan menjawab dengan bentuk, seolah-olah ia memahami maknanya (semantik). Sama seperti seseorang yang berada dalam kamar yang tidak mengerti tulisan China, namun lewat sebuah program ia seakan-akan dapat mengerti

Argumen John Searle memang telah memberikan penjelasan tentang fenomena robot atau super komputer yang dapat berpikir. Ia kemudian melanjutkan argumennya tentang bagaimana proses mengerti pada mesin dan manusia dapat dipahami. Apakah mesin dapat mengerti sebagaimana manusia mengerti?
Karena kita sebagai manusia dapat mengerti dalam arti verstehen seperti dalam filsafat Kant.

Pertanyaan kemudian dapat diajukan di sini: apakah pintu otomatis yang terbuka karena sinyal fotoelektrik dapat dikategorikan mengerti ketika kita akan memasukinya? John Searle melihat bahwa mesin seperti pintu otomatis tidak bisa dibilang mengerti seperti manusia mengerti. Ia membuat analogi tentang manusia yang mengerti sebuah bahasa, semisal cerita dalam bahasa Indonesia. Manusia yang mengerti cerita berbahasa Indonesia tidak sama dengan mesin yang mengerti dalam konteks gerak dan bentuk. Tentu ini akhirnya menjadi misteri, karena proses mengerti seperti halnya makna sebuah teks tak dapat dibuktikan. Karena itulah John Searle menolak Strong AI.
Fenomena super-komputer menurutnya adalah hanyalah bagian dari kecerdasan yang bersifat fungsional atau populer dengan istilah Weak AI. (John Searle, 1997:17).


Permasalahan Strong AI memang akhirnya terletak pada masalah yang dalam filsafat dikenal sebagai hermeneutika.

Hermeneutika adalah ilmu yang mengkaji tentang bagaimana manusia memahami sebuah teks. Pemikiran John Searle tentang apakah mesin mengerti seperti halnya manusia mengerti adalah contoh problem hermeneutis. Roger Schank, ahli komputer dan ilmu kognitif, melihat bahwa mesin bisa mengerti seperti halnya manusia. Karena menurutnya tujuan sebuah program dibuat adalah mensimulasi kemampuan manusia untuk mengerti sebuah cerita. Secara literal dapat dikatakan bahwa mesin secara programatis dapat meniru manusia, namun seperti kita ketahui pendapat Schank disangkal oleh John Searle.

Ketidak mungkinan terciptanya Strong AI lewat Chinese Room Argument menjelaskan bahwa robot atau mesin pintar yang mempunyai pikiran dan kesadaran seperti manusia hanya berada dalam sebuah fiksi. Bahkan sekarang pikiran dalam beberapa hal tidak lagi menjadi unsur konstitutif dari kecerdasan, filsafat misalnya tidak lagi mempunyai kecederungan untuk melihat pikiran (cogito) sebagai kajian utamanya. Berakhirnya epistemologi dan kemudian tergantikan dengan hermeneutika diproposisikan oleh Richard Rorty, keutamaan tubuh dibandingkan dengan pikiran dalam memahami dunia dirumuskan dalam filsafat teknologi Don Ihde.
Read more.....

Kompleksitas Algoritma

Algoritma adalah urutan logis langkah-langkah penyelesaian masalah secara sistematis. Sebuah algoritma tidah hanya harus benar saja, tetapi juga harus efisien. Suatu algoritma walaupun benar tidak akan berguna jika waktu dan memori yang di gunakan untuk menjalankan algoritma tersebut terlalu banyak.
Masalah keefesienan (efficiency) algoritma diukur dari : berapa jumlah waktu dan ruang (space) memori yang di butuhkan untuk menjalankan algirtma tersebut. Dimana algoritma yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang serta memori yang digunakan.

Mengapa Kita Memerlukan Algoritma yang Mangkus(efisien) ?


Misalnya sebuah komputer yang mampu menjalankan program dengan masukan berukuran n dalam waktu 10-4 x 2^n detik.
Dengan algoritma dan komputer tersebut, maka dapat dihitung bahwa untuk

n=10, dibutuhkan waktu eksekusi kira-kira 1/10 detik
n=20, dibutuhkan waktu eksekusi kira-kira 2 menit
n=30, dibutuhkan waktu eksekusi lebih dari satu hari

misalkan kita dapat menjalankan komputer tanpa gangguan selama satu tahun, maka waktu satu tahun itu hanya dapat menyelesaikan persoalan dengan masukan sebanyak 38.

Karena kita perlu menyelesaikan masalah dengan jumlah yang lebih besar, mukin kita harus membeli mesin baru yang 100 kali lebih cepat dari pada komputer semula (menjadi 10^-6). Dengan algorima yang sama, kita sekarang dapat menyelesaikan masalah denga masukan sebanyak n dalam waktu 10^-6 x 2^n detik. Bila kita menjalan kan mesin baru itu selama satu tahun penuh, kita hanya dapat menyelesaikan persoalan untuk masukan sebanyak n selama selang waktu tertentu, komputer baru itu akan dapat menyelesaikan persoalan dengan masukan paling banyak n + 7 dalam waktu yang sama.

Sebagai gantinya kita memutuskan untuk menaruh perhatian padan algoritmanya. Misalkan kita menemukan sebuah algrotima baru yang dapat menyelesaikan masalah semula dalam waktu orde kubik (n^3). Bayangkan lah dengan menggunakan komputer pertama, algoritma baru ini dapat menyelesaikan masalah dengan masukan sebanyak n dalam dalam waktu 10^-4 x n^3 detik. Dalam waktu satu hari kita dapat menyelesaikan masalah dengan jumlah masukan lebih besar dari 900; dan dalam waktu satu tahun komputasi ukuran masukan yang dapat diselesaikan hampir mencapai 6800 lebih bahkan dengan komputer yang kedua jumlah masukan yang dapat diproses selama satu tahun komputasi mejadi lebih banyak lagi banyak lagi, yaitu 31.500 lebih.

Hal ini diperlihatkan pada gambar dibawah ini. Jelaslah bahwa algoritma kedua lebih mangkus yang berarti lebih bagus dibandingkan degan algitma pertamanya.


Kita dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung banyaknya operasi/instruksi yang dieksekusi.

Jika kita mengetahui besaran waktu (dalam satuan detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut.

Contoh 1. Menghitung rata- rata

a1 a2 a3 … an

Larik bilangan bulat

Kita lihat procedure berikut ini

procedure HitungRerata(input a1, a2, ..., an : integer, output r : real)
{ Menghitung nilai rata-rata dari sekumpulan elemen larik integer a1, a2, ..., an.
Nilai rata-rata akan disimpan di dalam peubah r.
Masukan: a1, a2, ..., an
Keluaran: r (nilai rata-rata)
}
Deklarasi
k : integer
jumlah : real

Algoritma
jumlah←0
k←1
while k ← n do
jumlah←jumlah + ak
k←k+1
endwhile
{ k > n }
r ← jumlah/n { nilai rata-rata }


banyaknya operasi/instruksi
(i) Operasi pengisian nilai (jumlah←0, k←1, jumlah←jumlah+ak, k←k+1, dan r ← jumlah/n)
Jumlah seluruh operasi pengisian nilai adalah
t1 = 1 + 1 + n + n + 1 = 3 + 2n

(ii) Operasi penjumlahan (jumlah+ak, dan k+1)
Jumlah seluruh operasi penjumlahan adalah
t2 = n + n = 2n

(iii) Operasi pembagian (jumlah/n)
Jumlah seluruh operasi pembagian adalah
t3 = 1
Total kebutuhan waktu algoritma HitungRerata:

t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c detik

Model perhitungan kebutuhan waktu seperti di atas kurang dapat diterima:
1. Dalam praktek kita tidak mempunyai informasi berapa waktu sesungguhnya untuk melaksanakan suatu operasi tertentu

2. Komputer dengan arsitektur yang berbeda akan berbeda pula lama waktu untuk setiap jenis operasinya.

Selain bergantung pada komputer, kebutuhan waktu sebuah program juga ditentukan oleh compiler bahasa yang digunakan.

Model abstrak pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler apapun. Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma.
Read more.....
Related Posts Plugin for WordPress, Blogger...