Apa sebenarnya algoritma itu, seperti apa yang dimaksud dengan Algoritma? Sedikit yang saya mengerti kata itu, adalah bahwa itu tidak spesifik untuk bahasa tertentu, atau pola desain, melainkan itu salah satu prinsip paling dasar (jadi saya kira pertanyaan ini membuat saya terlihat bodoh).
Salah satu "opsi" yang saya miliki untuk memahaminya, adalah bahwa itu berarti metode untuk menyelesaikan sesuatu, yang dapat ditulis sebagai daftar dalam pseudocode.
Ketika saya menulis kode yang lebih rumit, saya pikir apa yang perlu dilakukan, dengan apa, dan bagaimana saya akan sampai di sana (bukan dalam bahasa pemrograman), kemudian menulisnya dalam kode. Apakah itu cara yang baik untuk melakukannya, dan apakah itu ada hubungannya dengan algoritma?
(Saya ingin bertanya di sini lebih pada Stackoverflow, karena ini bukan tentang masalah tertentu / bahasa plus saya merasa bahwa mayoritas orang di sini tahu 'mengapa', atau setidaknya jawaban di sini lebih rinci, daripada pada Stackoverflow di mana berbeda, saya minta maaf jika saya harus bertanya di sana)
sumber
Jawaban:
Algoritme adalah urutan terbatas dari instruksi yang terdefinisi dengan baik untuk menghitung suatu fungsi (atau menjalankan suatu prosedur) yang berakhir dalam keadaan akhir yang terdefinisi dengan baik.
sumber
Ini sebenarnya pertanyaan yang cukup menarik, dan sebenarnya masih merupakan pertanyaan penelitian terbuka.
Yuri Gurevich, salah satu raksasa dari Algorithm Theory, saat ini memberikan seri kuliah video di situs komunitas Microsoft Channel9:
Seperti yang Anda lihat, pertanyaan Anda sebenarnya adalah judul dari kuliah kedua. Namun, saya sangat menyarankan Anda menonton mereka bertiga.
Yang pertama, khususnya, berisi beberapa contoh algoritma yang membatalkan hampir semua definisi yang diberikan dalam sebagian besar jawaban lain di sini.
sumber
Algoritma seperti resep memasak yang baik . Anda memiliki beberapa input, beberapa langkah menengah yang didefinisikan dengan baik dan mendapatkan hasil akhir.
Diterapkan untuk pemrograman, ini adalah deskripsi jelas dari langkah-langkah yang perlu Anda lakukan untuk menyelesaikan masalah tertentu. Apa pun yang dapat Anda tulis dalam bahasa pemrograman pilihan Anda dapat dilihat sebagai algoritma - tetapi biasanya istilah ini hanya digunakan untuk tugas-tugas logis atau matematika yang umum, seperti menyortir atau mencari.
sumber
Algoritma adalah seperangkat aturan atau proses (dalam perhitungan) yang digunakan untuk pemecahan masalah. Pada dasarnya, ada masalah, Anda menginginkan solusi, dan proses untuk solusi ini adalah sebuah algoritma. Algoritme memiliki seperangkat aturan / proses yang terbatas untuk mencapai solusi.
Jika Anda seperti Edsger W. Dijkstra , Anda akan menulis algoritme Anda di selembar kertas dan mengerjakan / memperbaiki algoritme di atas kertas hingga Anda puas dengan algoritme Anda. Kalau tidak (terutama ketika menulis dokumentasi), diagram alur digunakan untuk secara diagram mewakili aliran dari suatu algoritma / proses. Hal ini memungkinkan orang lain untuk mengkritik diagram alur dan meningkatkan jika perlu (tanpa khawatir tentang bahasa pemrograman apa yang diperlukan).
Saya tidak tahu apakah itu menjawab pertanyaan Anda.
sumber
Algoritma: serangkaian operasi yang tertata dengan baik yaitu 1) tidak ambigu dan 2) dapat dihitung secara efektif sehingga menjalankan operasi mulai dari yang pertama menghasilkan hasil setelah sejumlah operasi yang terbatas.
sumber
Algoritma Ini adalah kombinasi dari langkah-langkah berurutan (langkah-langkah ini dapat berupa perhitungan, pemrosesan data, dan tugas penalaran) digunakan untuk menyelesaikan masalah dengan cara yang sangat sederhana dan efisien.
Ini dirancang paling efisien sehingga dapat diekspresikan dalam jumlah ruang dan waktu yang terbatas. kita bisa menerapkannya dalam bahasa pemrograman apa pun.
Properti suatu algoritma: berikut adalah sifat utama dari suatu algoritma: -
Algoritme harus memiliki nama yang unik. Seharusnya menetapkan set input dan output secara eksplisit. Algoritme harus berurutan dengan operasi yang tidak ambigu. Itu harus memiliki beberapa titik akhir, yaitu, ia berhenti dalam jumlah waktu yang terbatas. klik di sini untuk mempelajari tentang Desain dan Analisis Algoritma
sumber
Saya menggunakan istilah ini untuk menjelaskan rumus untuk menyelesaikan masalah tertentu. Rumus tidak perlu ditulis dalam matematika atau memiliki hubungan 1: 1 dengan suatu metode. Di sekolah, algoritma dan struktur data terkait erat dan dapat ditulis sebagai rumus matematika atau terbukti menggunakan bukti.
sumber
Algoritme adalah abstraksi dari program komputer, dan terdiri dari sekumpulan instruksi untuk mencapai beberapa tugas yang terdefinisi dengan baik dalam jumlah langkah yang terbatas, meskipun terikat pada jumlah langkah mungkin sangat besar dan langkah-langkah individu mungkin kompleks ( terbatas) tugas dalam hak mereka sendiri. Meskipun ada (benar) program yang secara keseluruhan dikenal-non-algoritmik, mereka semua bekerja dengan mengulangi potongan algoritmik dalam beberapa pola. (Lebih menarik adalah program-program yang status pemberhentiannya tidak diketahui, tetapi sebagian besar programmer tidak benar-benar berurusan dengan hal-hal seperti itu; Saya tahu saya tidak melakukannya!)
sumber
IMO tidak ada yang tahu :) Saya telah melihat istilah yang diterapkan hanya untuk fungsi perhitungan matematis, untuk setiap fungsi yang mengambil input dan menghasilkan output, dan untuk apa pun yang mengambil input dan melakukan semacam operasi di atasnya.
Apakah Anda menganggap salah satu dari semua ini sebagai algoritma?
finder
fungsi yang query database untuk objek Pelanggansumber
Algoritma adalah sebuah ide, metode, teknik, "kecerdasan" untuk perhitungan atau pelaksanaan tugas yang sifatnya abstrak, tetapi saat dijalankan pada komputer di dunia nyata, kami bercita - cita untuk menggunakan sumber daya sesedikit mungkin. , yaitu, di dunia komputer, Waktu dan memori.
sumber
Algoritme adalah urutan langkah yang didefinisikan dengan baik yang menghasilkan hasil dalam waktu yang terbatas.
Langkah yang terdefinisi dengan baik: Itu adalah sesuatu yang dapat Anda lakukan, atau hitung, yang didefinisikan dengan tepat. Hanya dengan membaca langkah Anda tahu apa yang harus Anda lakukan dan bagaimana melakukannya. Khususnya, Anda bisa menulisnya dalam bahasa pemrograman yang Anda tahu, dan pastikan fragmen programnya cocok dengan langkah itu.
Urutan: Langkah-langkah dieksekusi dalam urutan yang ditentukan. Langkah-langkah dapat dieksekusi lebih dari sekali tergantung pada data (loop) atau tidak dieksekusi sama sekali tergantung pada data (jika pernyataan). Algoritma paralel hanya memaksakan urutan parsial pada langkah-langkah, jadi saya terlalu menyederhanakan di sini. Akan lebih tepat untuk menggambarkannya sebagai set yang dipesan sebagian daripada urutan, tetapi saya ingin menjaga kata-kata sedikit lebih sederhana. Selain itu, mudah untuk menanamkan set yang dipesan sebagian dalam urutan penuh.
Hasil: Status atau nilai akhir. Itu tidak harus dapat diprediksi sebelumnya, tetapi itu harus menjadi tujuan yang pasti memenuhi beberapa kondisi. Ini berarti bahwa suatu sistem operasi bukanlah suatu algoritma, walaupun ia menggunakan banyak dari mereka.
Hingga: Algoritma dijamin untuk berhenti kapan saja, setidaknya pada mesin yang dapat berjalan cukup lama. Itu tidak selalu dijamin untuk berhenti dalam waktu yang dapat diprediksi, dan itu tidak dijamin bahwa itu akan berhenti sebelum matahari mengembang dan berubah merah pada setiap mesin yang ada. Ini juga berarti sistem operasi bukan suatu algoritma, karena idealnya akan berjalan selamanya. Saya telah melihat kata "prosedur" yang digunakan untuk menggambarkan sesuatu yang akan menjadi algoritma jika kami yakin itu akan berhenti kapan-kapan. (Dimungkinkan untuk memiliki algoritme yang akan berhenti dalam jumlah waktu yang tidak diketahui. Misalkan, katakan dugaan Goldbach terbukti salah secara matematis, dalam bukti nonkonstruksi, jadi ada bilangan genap> 2 yang bukan jumlah dari dua bilangan prima Algoritma yang hanya menguji bilangan genap akhirnya akan berakhir,
Algoritme adalah sesuatu yang sengaja abstrak, jadi kami tidak mempertimbangkan pertanyaan seperti "Apakah mungkin secara fisik untuk melakukan ini sebelum kematian panas Semesta?". Mereka akan terlalu sulit untuk dijawab. Jika terkait dengan operasi komputer, mudah untuk mengimplementasikannya dalam bahasa pemrograman.
sumber
Jika saya harus memberikan definisi umum, saya akan mengatakan algoritma adalah formula untuk memecahkan masalah komputasi yang lebih kompleks daripada, dan akhirnya menjadi lebih efisien daripada, solusi yang jelas / kasar.
Juga, penting untuk dicatat bahwa suatu algoritma bukan kode sumber tertentu; itu perhitungannya sendiri. Antara lain, ini berarti bahwa bahasa apa pun yang lengkap Turing dapat menerapkan algoritma apa pun yang dapat diterapkan oleh bahasa lengkap Turing lainnya.
sumber