ALGORITMA DARI SEGI ILMU DAN
PENDAPAT PRIBADI
BAB I. ALGORITMA DARI SEGI ILMU
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 algorismaadalah 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. Masalah timbul pada saat akan
menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem
(program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja
seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan
prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat
gambaran (diagram alur) diatas kertas.
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.
- 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.
- 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.
- 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.
Algoritma
Pemograman
Pemrograman adalah
proses menulis, menguji dan memperbaiki (debug), dan memelihara kode
yang membangun sebuah program komputer.
Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman
adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau
'pekerjaan' sesuai dengan keinginan si pemrogram. Untuk dapat melakukan
pemrograman, diperlukan keterampilan dalam algoritma, logika, bahasa
pemrograman, dan di banyak kasus,
pengetahuan-pengetahuan lain seperti matematika.
Pemrograman adalah sebuah seni
dalam menggunakan satu atau lebih algoritma yang
saling berhubungan dengan menggunakan sebuah bahasa pemrograman tertentu
sehingga menjadi sebuah program komputer. Bahasa
pemrograman yang berbeda mendukung gaya
pemrograman yang berbeda pula. Gaya pemrograman ini biasa disebut paradigma
pemrograman.
Apakah memprogram perangkat lunak
lebih merupakan seni, ilmu,
atau teknik telah
lama diperdebatkan. Pemrogram yang baik biasanya mengkombinasikan tiga hal
tersebut, agar dapat menciptakan program yang efisien, baik dari sisi waktu
berjalan (running time), atau memori.
Bahasa Pemograman
Perbedaan bahasa pemrograman dapat
menjadi penyebab perbedaan paradigma pemrograman.
Pilihan bahasa pemrograman dipengaruhi banyak alasan, seperti kecocokan dengan
kriteria program dan jenis aplikasi yang akan dibuat.
Beberapa bahasa pemrograman
adalah:
·
Pascal
·
Basic
·
Cobol
·
Java
·
Fortran
·
Ada
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
Abu Ja’far Mohammad
Ibnu Musa Al Khawarizmi, adalah penemu pertama dan pelopor logika algoritma.
Definisi Algoritma :
1. Langkah-langkah yg dilakukan agar solusi masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
3. Suatu motode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata (Webster dictionary)
Kriteria Pemilihan Algoritma:
1. output
Definisi Algoritma :
1. Langkah-langkah yg dilakukan agar solusi masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
3. Suatu motode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata (Webster dictionary)
Kriteria Pemilihan Algoritma:
1. output
mengacu pada definisi algoritma, suatu
algoritma haruslah mempunyai output yang harus merupakan solusi dari masalah
yang sedang diselesaikan.
2. Efektifitas dan Efisiensi
2. Efektifitas dan Efisiensi
ikatakan efektif jika algoritma tersebut
menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan dalam
arti algoritma harus tepat guna.Dikatakan efisiensi jika waktu proses suatu
algoritma relatif lebih singkat dan penggunaan memori komputernya lebih
sedikit.
3. Jumlah langkahnya berhingga
3. Jumlah langkahnya berhingga
maksudnya adalah barisan instruksi yang dibuat
harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang
dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.
4. Berakhir à (Semi Algoritma)
4. Berakhir à (Semi Algoritma)
proses didalam mencari penyelesaian suatu
masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya
atau berupa informasi yang tidak diketemukan solusinya. Artinya baik dalam
kondisi solusi ada atau tidak ada, proses akan tetap harus berakhir dan
berhenti. Istilah lain dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu
suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan
solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan
berjalan tanpa henti.
5. Terstruktur
5. Terstruktur
yaitu urutan barisan langkah-langkah yang
digunakan harus disusun sedemikian rupa agar proses penyelesaian tidak
berbelit-belit sedemikian sehingga bagian-bagian proses dapat dibedakan dengan
jelas mana bagian input, proses dan output sehingga memudahkan user melakukan
pemeriksaan ulang.
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:
a. Algoritma untuk mengirimkan surat
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat.
b. 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
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:
a. Algoritma untuk mengirimkan surat
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat.
b. 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
Categories:
Education