ALGORITMA DARI SEGI ILMU
Diagram Alur sering digunakan untuk menggambarkan sebuah algoritma.
Dalam
matematika dan komputasi, algoritma merupakan kumpulan perintah untuk
menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap
dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan
untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum
menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi
awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma
sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan
(logika Boolean dan perbandingan) sampai tugasnya selesai.
Desain
dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang
mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan
masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin
ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau
bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada
suatu masalah dengan kriteria yang sama.
Kompleksitas
dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan
algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang
dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki
kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk
menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Sejarah
istilah "algoritma"Kata algoritma berasal dari latinisasi nama
seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad
ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari
abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata
algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk
menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya
dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini
berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah
yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan.
Jenis-jenis Algoritma
Terdapat
beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri.
Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan
memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma
tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan
dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak
algoritma yang berbeda.
1.Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi
permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan
terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk
dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah
besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
2.Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu
masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa
bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip
dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi
permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik
ada perbedaan dari karakter permasalahan yang dihadapi.
3.Metode serakah. Sebuah algoritma serakah mirip dengan
sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu
diketahui dalam setiap tahap;
dan menggunakan pilihan
"serakah" apa yang dilihat terbaik pada saat itu.
Bahasa Pemograman
Pemrograman adalah bahan
yang banyak digunakan di berbagai kompetisi komputer di Indonesia maupun dunia.
Di tingkat SMA, contohnya, pemrograman dipertandingkan dalam Olimpiade Sains Nasional setiap
tahunnya. Ketigapuluh peraih medali di Olimpiade Sains Nasional ini kemudian
menjadi Tim Olimpiade
Komputer Indonesia, dan menempuh Pelatihan
Nasional yang menyeleksi empat orang wakil untuk mengikuti Olimpiade Sains Internasional bidang Informasi (International
Olympiad in Informatics) yang diadakan setiap tahunnya
Dalam rekayasa perangkat
lunak, pemrograman (pelaksanaan) dianggap sebagai salah satu tahap dalam proses
pengembangan perangkat lunak.
Ada sebuah perdebatan yang sedang berlangsung pada sejauh mana program
penulisan adalah seni, kerajinan atau disiplin teknik.
Secara umum, baik programming adalah
dianggap sebagai aplikasi diukur dari ketiga, dengan tujuan menghasilkan
efisien dan solusi perangkat lunak evolvable (kriteria untuk
"efisien" dan "evolvable" sangat bervariasi). Disiplin yang
berbeda dari berbagai profesi teknis dalam programer, pada umumnya, tidak perlu
izin atau lulus standar (atau governmentally diatur) tes sertifikasi untuk
menyebut diri mereka "programer" atau bahkan "insinyur perangkat
lunak." Namun, mewakili diri sendiri sebagai seorang "Professional
Software Engineer" tanpa lisensi dari lembaga yang terakreditasi ilegal di
banyak bagian dunia.
Lain sedang berlangsung perdebatan adalah sejauh mana bahasa pemrograman
yang digunakan dalam menulis program komputer yang memengaruhi bentuk program
akhir diperlukan. Perdebatan ini analog dengan mengelilingi hipotesis
Sapir-Whorf dalam linguistik, yang mendalilkan bahwa suatu bahasa tertentu
sifat memengaruhi pikiran kebiasaan dari speaker. Pola bahasa yang berbeda
menghasilkan pola pikir yang berbeda. Ide ini menantang kemungkinan mewakili
dunia secara sempurna dengan bahasa, karena mengakui bahwa mekanisme bahasa
apapun kondisi pikiran pembicara dari masyarakat.
Kata lain, pemrograman adalah kerajinan persyaratan mengubah menjadi
sesuatu yang dapat mengeksekusi sebuah komputer. Sejarah pemrograman Lihat
juga: Sejarah bahasa pemrograman Wired plug board untuk IBM 402 Accounting
Machine.
Konsep perangkat yang beroperasi setelah telah ditetapkan, set instruksi
ditelusuri ke Mitologi Yunani, terutama Hephaestus dan pelayan mekanis . Para
mekanisme Antikythera kalkulator menggunakan persneling dari berbagai ukuran
dan konfigurasi untuk menentukan operasi.
Dikenal paling awal dapat diprogram mesin
(mesin yang perilakunya dapat dikendalikan dan diprediksi dengan satu set
instruksi) adalah Al-Jazari's programmable Automata pada 1206. Salah seorang Al-Jazari's robot ini awalnya
sebuah perahu otomatis dengan empat musisi yang mengambang di danau untuk
menghibur para tamu di pesta minum kerajaan. Pemrograman perilaku mekanisme ini
berarti menempatkan pasak dan Cams ke drum kayu di lokasi tertentu. Ini
kemudian akan bertabrakan dengan pengungkit kecil yang beroperasi alat musik
perkusi. Keluaran dari perangkat ini adalah drumer kecil bermain berbagai ritme
dan pola drum. canggih lainnya mesin
diprogram oleh Al-Jazari adalah benteng jam, terkenal karena konsep variabel,
yang operator bisa memanipulasi yang diperlukan ( yaitu, panjang siang dan
malam). The Jacquard Loom, Joseph Marie Jacquard yang dikembangkan pada tahun
1801, menggunakan serangkaian kartu karton dengan menekan lubang di dalamnya.
Pola lubang pola yang mewakili alat tenun harus mengikuti menenun kain. Alat
tenun bisa menghasilkan tenun yang sama sekali berbeda dengan menggunakan
kumpulan kartu yang berbeda. Charles Babbage mengadopsi penggunaan kartu menekan
sekitar tahun 1830 untuk mengendalikan Analytical Engine. Sintesis perhitungan
numerik, operasi dan output telah ditentukan, bersama dengan cara untuk
mengatur dan masukan petunjuk dalam cara yang relatif mudah bagi manusia untuk
hamil dan menghasilkan, menyebabkan perkembangan modern pemrograman komputer.
Pengembangan pemrograman komputer dipercepat melalui Revolusi Industri.
Pada akhir 1880-an, Herman
Hollerith menciptakan rekaman data pada media yang kemudian dapat dibaca oleh
mesin. Sebelum menggunakan mesin yang dapat dibaca dari media, di atas, telah
untuk kontrol, bukan data. "Setelah beberapa percobaan awal dengan kertas
pita, ia menetap di kartu menekan ..." Untuk memproses kartu menekan ini,
pertama dikenal sebagai" kartu Hollerith "dia menciptakan mesin
tabulasi, dan kunci mesin punch. Ketiga penemuannya dasar dari industri
pengolahan informasi modern. Pada tahun 1896 ia mendirikan Tabulating Machine
Company (yang kemudian menjadi inti dari IBM).
Penambahan panel kontrol ke
Tipe I Tabulator 1906 memungkinkannya untuk melakukan pekerjaan yang berbeda
tanpa harus secara fisik dibangun kembali. Pada akhir 1940-an, ada berbagai
plug-board programmable mesin, yang disebut catatan unit peralatan, untuk
melakukan tugas-tugas pengolahan data (kartu membaca). Pemrogram komputer awal
plug-papan yang digunakan untuk berbagai perhitungan kompleks diminta dari
mesin yang baru diciptakan. Data dan instruksi dapat disimpan pada kartu punch
eksternal, yang disimpan dalam rangka program dan disusun dalam deck.
Penemuan arsitektur Von
Neumann memungkinkan program komputer untuk disimpan dalam memori komputer.
Program awal harus susah payah dibuat dengan menggunakan instruksi mesin
tertentu, sering kali dalam notasi biner. Setiap model komputer mungkin akan
memerlukan berbagai instruksi untuk melakukan tugas yang sama. Bahasa assembly
kemudian dikembangkan yang memungkinkan programmer menentukan setiap instruksi
dalam format teks, singkatan memasukkan kode untuk setiap operasi, bukan menetapkan
sebuah nomor dan alamat dalam bentuk simbolik (misalnya, ADD X, TOTAL). Pada
tahun 1954 ditemukan Fortran, menjadi yang pertama bahasa pemrograman tingkat
tinggi yang memiliki implementasi fungsional. Hal diperbolehkan pemrogram untuk
menentukan perhitungan dengan memasukkan formula secara langsung (misalnya Y =
X * 2 + 5 * X + 9) . Program teks, atau sumber, diubah menjadi instruksi mesin
menggunakan program khusus yang disebut kompilator. Banyak bahasa lainnya
dikembangkan, termasuk beberapa program untuk komersial, seperti COBOL. Program
itu sebagian besar masih masuk menggunakan kartu atau kertas punch tape. (Lihat
pemrograman komputer di era kartu punch). Pada akhir 1960-an, perangkat
penyimpanan data dan terminal komputer menjadi cukup murah sehingga program
dapat dibuat dengan mengetikkan langsung ke dalam komputer. Editor teks
dikembangkan yang memungkinkan perubahan dan perbaikan harus dilakukan jauh
lebih mudah dibandingkan dengan punch card.
Ketika waktu telah
berkembang, komputer telah membuat lompatan raksasa di bidang pengolahan
kekuasaan. Ini telah membawa bahasa pemrograman baru yang lebih disarikan dari
hardware yang mendasarinya. Walaupun bahasa tingkat tinggi biasanya dikenakan
biaya overhead yang lebih besar, peningkatan kecepatan komputer modern telah
membuat penggunaan bahasa-bahasa ini jauh lebih praktis daripada di masa lalu.
Ini semakin disarikan bahasa biasanya lebih mudah untuk belajar dan
memungkinkan para programmer untuk mengembangkan aplikasi jauh lebih efisien dan
dengan lebih sedikit kode. Namun, bahasa tingkat tinggi masih praktis untuk
beberapa program, seperti yang di mana tingkat rendah diperlukan pengendalian
perangkat keras atau di mana kecepatan pemrosesan berada pada premi.
Sepanjang paruh kedua abad
kedua puluh, pemrograman adalah karier yang menarik di sebagian besar
negara-negara maju. Beberapa bentuk pemrograman telah lepas pantai semakin
tunduk pada outsourcing (impor perangkat lunak dan jasa dari negara-negara
lain, biasanya pada upah yang lebih rendah), membuat keputusan karier
pemrograman di negara maju lebih rumit, sementara meningkatkan peluang ekonomi
di daerah-daerah kurang berkembang. Tidak jelas sejauh mana tren ini akan
berlanjut dan seberapa dalam dampak akan programmer upah dan kesempatan.
[sunting] Modern pemrograman [sunting] Kualitas persyaratan
Apapun pendekatan pengembangan perangkat lunak mungkin, program akhir harus
memenuhi beberapa sifat mendasar. Properti berikut adalah di antara yang paling
relevan:
·
Efisiensi / kinerja: jumlah sumber daya sistem program
yang mengonsumsi (prosesor waktu, ruang memori, perangkat lambat seperti disk,
bandwidth jaringan dan bahkan sampai batas tertentu interaksi dari pemakai):
semakin sedikit, semakin baik. Ini juga termasuk pembuangan benar beberapa
sumber, seperti membersihkan file-file sementara dan tidak adanya kebocoran memori.
·
Reliabilitas: seberapa sering hasil dari sebuah
program sudah benar. Hal ini tergantung pada kebenaran konseptual algoritma,
dan pemrograman minimisasi kesalahan, seperti kesalahan dalam manajemen sumber
daya (misalnya, buffer overflows dan ras kondisi) dan kesalahan logika (seperti
pembagian dengan nol).
·
Kekokohan: seberapa baik program masalah
mengantisipasi bukan karena kesalahan programmer. Ini termasuk situasi seperti
salah, tidak pantas atau merusak data, tidak tersedianya sumber daya yang
dibutuhkan seperti memori, sistem operasi layanan dan koneksi jaringan, dan
kesalahan pengguna.
·
Kegunaan: yang ergonomi sebuah program: kemudahan
dengan mana seseorang dapat menggunakan program untuk tujuan, atau dalam
beberapa kasus bahkan tujuan tak terduga. Isu-isu tersebut dapat membuat atau
menghancurkan kesuksesan bahkan tanpa masalah lain. Hal ini melibatkan berbagai
tekstual, grafis dan kadang-kadang elemen-elemen perangkat keras yang
meningkatkan kejelasan, intuitif, kekompakan dan kelengkapan program antarmuka
pengguna.
·
Portabilitas: kisaran perangkat keras komputer dan
platform sistem operasi yang kode sumber dari program dapat dikompilasi /
ditafsirkan dan lari. Hal ini tergantung pada perbedaan-perbedaan dalam
fasilitas pemrograman yang disediakan oleh platform yang berbeda, termasuk
hardware dan sistem operasi sumber daya, perilaku yang diharapkan dari hardware
dan sistem operasi, dan ketersediaan platform compiler tertentu (dan
kadang-kadang perpustakaan) untuk bahasa dari source code.
·
Kemampu-rawatan: kemudahan dengan sebuah program yang
dapat dimodifikasi oleh pengembang sekarang atau di masa mendatang dalam rangka
untuk membuat perbaikan atau penyesuaian, memperbaiki bug dan lubang keamanan,
atau disesuaikan dengan lingkungan baru. Praktek yang baik selama pengembangan
awal membuat perbedaan dalam hal ini. Kualitas ini mungkin tidak secara
langsung jelas bagi pengguna akhir tetapi dapat secara signifikan memengaruhi
nasib sebuah program jangka panjang.
BAB II.
ALGORITMA MENURUT PENDAPAT PRIBADI
Definisi Algoritma
Algoritma adalah Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
Kesimpulannya:
Suatu Algoritma yang terbaik(The Best) : “Suatu algoritma harus menghasilkan output yan tepat guna(efektif) dalam waktu yang relatif singkat & penggunaan memori yang relatif sedikit(efisien) dengan langkah yang berhingga & prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada solusinya”
Contoh:
Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.3
Suatu Algoritma yang terbaik(The Best) : “Suatu algoritma harus menghasilkan output yan tepat guna(efektif) dalam waktu yang relatif singkat & penggunaan memori yang relatif sedikit(efisien) dengan langkah yang berhingga & prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada solusinya”
Contoh:
Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.3
Analisis Suatu Algoritma
(Untuk melihat faktor efisiensi & efektifitas dari algoritma tersebut), dapat dilakukan terhadap suatu algoritma dengan melihat pada:
- Waktu tempu (Running Time) dari suatu algoritma:
(Untuk melihat faktor efisiensi & efektifitas dari algoritma tersebut), dapat dilakukan terhadap suatu algoritma dengan melihat pada:
- Waktu tempu (Running Time) dari suatu algoritma:
adalah satuan
waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan
suatu masalah.
Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah:
1. Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan dalam menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses tersebut
2. Besar dan jenis input data: Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double precesion)
3. Jenis operasi: Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis operasi tersebut meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama dibandingkan operasi penjumlahan atau pengurangan.
4. Komputer dan kompilator: hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau tahap pembuatan algoritma yang efisien.
Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah:
1. Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan dalam menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses tersebut
2. Besar dan jenis input data: Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double precesion)
3. Jenis operasi: Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis operasi tersebut meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama dibandingkan operasi penjumlahan atau pengurangan.
4. Komputer dan kompilator: hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau tahap pembuatan algoritma yang efisien.
5. Jumlah Memori Yang digunakan: banyaknya langkah yang
digunakan dan jenis variabel data yang dipakai dalam suatu algoritma akan
sangat mempengaruhi penggunaan memori.
Sifat-Sifat Algoritma
- Banyaknya langkah instruksi harus berhingga
- Banyaknya langkah instruksi harus berhingga
pelaksanaan
sebuah algoritma yang terprogram haruslah dapat diakhiri atau diselesaikan
melalui sejumlah langkah operasional yang berhingga. Jika tidak demikian, kita
tidak akan dapat mengharapkan bahwa pelaksaan algoritma tersebut dapat
menghasilkan suatu solusi yang baik.
- Langkah atau instruksi harus jelas
- Langkah atau instruksi harus jelas
artinya bahwa
penulisa setiap langkah yang terdapat didalam sebuah algoritma harus memiliki
arti yang khusus atau spesifik sehingga dapat dibedakan antara penulisan
langkah untuk komputer(program/pemrograman) dengan penulisan langkah bagi
manusia(pesudocode). Manusia akan lebih mudah memahami algoritma yang terdiri
atas simbol-simbol(Contoh: pembuatan algoritma dengan diagram alur/flowchart)
sedangkan komputer hanya membutuhkan sebuah penulisan algoritma dengan
kode-kode yang dituangkan dalam bahasa yang dimengerti oleh komputer itu
sendiri(bahasa pemrograman).
- Proses harus jelas dan mempunyai batasan
- Proses harus jelas dan mempunyai batasan
rangkaian suatu
proses yang berisi langkah-langkah instruksi dari suatu algoritma yang akan
dilaksanakn harus ditetapkan dengna jelas, baik dan pasti sebab sebuah
algoritma harus memiliki instruksi dasar tertentu dimana setiap instruksi harus
memiliki unsur pelaksana yang berfungsi sebagai pemroses data yang akan
dimasukkan dalam sebuah komputer. Dengan demikian, sebuah algoritma harus
ditulis dengan jelas tentang batasa-batasan proses yang akan dilaksanakan oleh
komputer.
- Efektifitas
- Efektifitas
instruksi yang
diberikan pada komputer agar hanya menjalankan atau melaksanakan proses yang
mampu dilaksanakannya. Yang dimaksud mampu adalah bahwa suatu algoritma atau
instruksi-instruksi dalam sebuah program hanya akan dapat dilaksanakan jika
informasi yang diberikan oleh instruksi-instruksi tersebut lengkap, benar dan
jelas.
- Adanya batasan ruang lingkup
- Adanya batasan ruang lingkup
sebuah
algoritma yang baik adalah hanya ditujukan bagi suatu masalah tertentu saja.
Susunana input harus ditentukan lebih dulu sebab susunan tersebut enentukan
sifat umum dari algoritma yang bersangkutan.
Referensi
1.www.wikipedia.org
2.web master.com
MAKALAH
ALGORITMA
DARI SEGI ILMU DAN PENDAPAT PRIBADI
(SEMESTER
1)
DOSEN:
Bpk AMRAN MURSALIM,SQ,ST
OLEH
SURYADI.B
NIM:111.11.126
STT
TELEMATIKA CAKRAWALA
2011/2012