Video: Cara Mendapatkan Lebih Banyak REAL Likes Di Instagram 2024
Oleh John Paul Mueller, Luca Massaron
Algoritma tidak perlu membosankan atau sukar untuk digunakan. Sebenarnya, algoritma mengelilingi anda dalam banyak cara yang anda mungkin tidak berfikir, dan anda menggunakannya setiap hari untuk melaksanakan tugas penting. Walau bagaimanapun, anda perlu menggunakan algoritma tanpa perlu menjadi ahli matematik.
Bahasa pengaturcaraan membolehkan anda menerangkan langkah-langkah yang digunakan untuk membuat algoritma. Sesetengah bahasa adalah lebih baik daripada yang lain dalam melakukan tugas ini dengan cara yang orang dapat memahami tanpa menjadi saintis komputer. Python membuat algoritma menggunakan lebih mudah kerana ia datang dengan banyak sokongan terbina dalam dan lanjutan (melalui penggunaan pakej, dataset, dan sumber lain). Lembaran Menipu ini membantu anda mengakses petua yang paling biasa diperlukan untuk membuat penggunaan algoritma anda dengan cepat dan mudah.
Mencari Algoritma Anda Perlu
Jadual berikut menerangkan jenis algoritma dan algoritma yang mungkin berguna untuk pelbagai jenis analisis data. (Anda boleh mencari perbincangan semua algoritma ini dalam Algoritma Untuk Dummies.)
Algoritma | Deskripsi | Link Membantu |
A * Search | Algoritma menjejaki kos nod ketika ia meneroka mereka menggunakan persamaan: f (n) = g (n) + h (n), di mana:
n ialah pengecam nod g (n) ialah kos untuk mencapai nod setakat ini h (n) Matlamat dari simpul f (n) ialah anggaran kos laluan dari n ke matlamat Idea ini adalah untuk mencari jalan yang paling menjanjikan terlebih dahulu dan elakkan laluan yang mahal. |
Standford. edu |
Tree Balanced | Semacam pokok yang mengekalkan struktur yang seimbang melalui penyusunan semula supaya ia dapat memberikan masa akses yang berkurangan. Bilangan elemen di sebelah kiri berbeza dari nombor di sebelah kanan dengan satu sama lain. | Webdocs |
Bidirectional Search | Teknik ini dicari secara serentak dari nod akar dan nod gol sehingga kedua-dua laluan carian bertemu di tengah. Satu kelebihan pendekatan ini adalah bahawa ia adalah masa yang cekap kerana ia mendapati penyelesaiannya lebih cepat daripada banyak penyelesaian kuasa kasar lain. Di samping itu, ia menggunakan memori lebih cekap daripada pendekatan lain dan sentiasa mencari penyelesaian. Kelemahan utama adalah kerumitan pelaksanaan. | Perancangan. cs |
Tree Binary | Ini adalah sejenis pokok yang mengandungi nod yang menyambung kepada sifar (nod daun), satu atau dua (nod cawangan) nod lain. Setiap nod mentakrifkan tiga elemen yang mesti disertakan untuk menyediakan sambungan dan menyimpan data: penyimpanan data, sambungan kiri, dan sambungan yang betul. | cs. cmu. edu |
Carian Breadth-First | Teknik ini bermula pada nod akar, meneroka setiap node anak pertama, dan hanya kemudian bergerak ke tahap seterusnya. Ia berkembang tahap demi tahap sehingga ia mendapat penyelesaian. Kelemahan algoritma ini adalah bahawa ia mesti menyimpan setiap nod dalam ingatan, yang bermaksud ia menggunakan sejumlah besar memori untuk sebilangan besar nod. Teknik ini dapat memeriksa nod duplikat, yang menjimatkan masa, dan selalu muncul dengan penyelesaian. | Khan Academcy |
Brute Force | Ini adalah teknik menyelesaikan masalah di mana seseorang cuba setiap penyelesaian yang mungkin, mencari penyelesaian masalah terbaik. Teknik kekuatan brute menjamin penyelesaian yang paling sesuai apabila ada tetapi sangat memakan masa untuk melaksanakan bahawa kebanyakan orang mengelakkannya. | Igm. Univ |
Carian Kedalaman Pertama | Teknik ini bermula pada nod akar dan meneroka satu set node anak yang disambungkan sehingga ia mencapai nod daun. Ia berkembang cawangan mengikut cawangan sehingga ia mendapat penyelesaian. Kelemahan algoritma ini adalah bahawa ia tidak dapat memeriksa nod pendua, yang bermaksud bahawa ia boleh melintasi laluan nod yang sama lebih daripada satu kali. Malah, algoritma ini tidak dapat mencari penyelesaian sama sekali, yang bermaksud bahawa anda mesti menentukan titik cutoff untuk menjaga algoritma dari mencari tanpa batas. Satu kelebihan pendekatan ini ialah memori itu berkesan. | Hacker Earth |
Divide and Conquer | Ini adalah teknik penyelesaian masalah di mana masalah tersebut dipecahkan kepada potongan terkecil dan diselesaikan menggunakan pendekatan yang paling mudah. Teknik ini menjimatkan masa dan sumber yang banyak jika dibandingkan dengan pendekatan lain, seperti kekerasan. Walau bagaimanapun, ia tidak selalu menjamin hasil terbaik. | Khan Academy |
Dijikstra | Ini adalah algoritma yang digunakan untuk mencari jalan terpendek dalam graf yang diarahkan, berwajaran (mempunyai berat positif). | Geeks untuk Geeks |
Graf | Graf adalah sejenis pelanjutan pokok. Seperti pokok, anda mempunyai nod yang menyambung satu sama lain untuk mewujudkan hubungan. Bagaimanapun, tidak seperti pokok binari, graf boleh mempunyai lebih daripada satu atau dua sambungan. Sebenarnya, nod grafik sering mempunyai banyak sambungan. Anda melihat graf yang digunakan di tempat-tempat seperti peta untuk GPS dan pelbagai tempat lain yang mana pendekatan atas-bawah sesuatu pokok tidak akan berfungsi. | Tutorial |
Algoritma tamak | Thistechnique salah satu penyelesaian masalah di mana penyelesaian bergantung pada jawapan yang terbaik untuk setiap langkah proses penyelesaian masalah. Algoritma tamak biasanya membuat dua andaian:
Membuat satu pilihan yang optimum pada satu langkah yang mungkin. Dengan memilih pemilihan yang optimum pada setiap langkah, mencari penyelesaian optimum untuk masalah keseluruhan mungkin. |
Tutorial |
Greedy Best-First Search (BFS) | Algoritma sentiasa memilih laluan yang paling hampir dengan matlamat menggunakan persamaan: f (n) = n). Algoritma tertentu ini dapat mencari penyelesaian dengan cepat, tetapi juga dapat terjebak dalam gelung, sehingga banyak orang tidak menganggapnya sebagai pendekatan yang optimum untuk mencari solusi. | Centurion2 |
Hashing | Ini adalah satu kaedah untuk meramalkan lokasi item data tertentu dalam struktur data (apa pun strukturnya) sebelum mencarinya. Pendekatan ini bergantung pada penggunaan kunci yang dimasukkan ke indeks. Fungsi hash bertukar menjadi nilai numerik yang digunakan oleh algoritma ke dalam jadual hash. Jadual hash menyediakan cara untuk membuat indeks yang menunjuk kepada elemen dalam struktur data supaya algoritma mudah meramalkan lokasi data. | Tutorial |
Heap | Ini adalah pokok canggih yang membolehkan kemasukan data ke dalam struktur pokok. Penggunaan penyisipan data menjadikan penyortiran lebih cepat. Anda boleh mengklasifikasikan pokok ini sebagai timbunan max dan timbunan min, bergantung kepada keupayaan pokok untuk segera memberikan nilai maksimum atau minimum yang terdapat di dalam pokok itu. | Tutorial |
Heuristics | Ini adalah teknik penyelesaian masalah yang bergantung kepada penemuan diri dan menghasilkan hasil yang cukup berguna (tidak semestinya optimum, tetapi cukup baik) untuk mengatasi masalah dengan baik bahawa penyelesaian yang lebih baik bukanlah ' tidak perlu. Penemuan diri adalah proses membenarkan algoritma menunjukkan kepada anda jalan yang berpotensi berguna untuk penyelesaian (tetapi anda masih harus mengandalkan intuisi dan pemahaman manusia untuk mengetahui sama ada penyelesaiannya adalah yang tepat). | Northwest. edu |
MapReduce | Ini adalah kerangka kerja untuk membuat algoritma berfungsi menggunakan perhitungan secara selari (menggunakan beberapa komputer bersambung bersama dalam rangkaian), membolehkan algoritma menyelesaikan penyelesaian mereka dengan lebih cepat. | Hadoop Apache |
Mergesort | Mergesort ialah kaedah penyusun data berasaskan tujuan umum. Ia bergantung kepada pendekatan membahagi-dan-menakluk untuk melaksanakan tugasnya. | Geeks for Geeks |
Nash Equilibrium | Ini adalah teori permainan di mana pemain lain tahu strategi keseimbangan bagi pemain lain, sehingga tidak ada yang dapat memperoleh keuntungan dengan mengubah strategi pribadinya. Teori ini melihat kegunaan dalam situasi bermusuhan di mana pemain mesti mengambil kira keputusan yang dibuat oleh semua pemain lain untuk memenangi permainan. | Khan Academy |
PageRank | PageRank adalah algoritma untuk mengukur kepentingan nod dalam graf. Algoritma ini adalah akar algoritma teras Google untuk menjanakan carian yang relevan kepada pengguna. | Princeton. edu |
Pencarian Heuristik Murni | Algoritma ini memperluaskan nod mengikut kos mereka. Ia mengekalkan dua senarai. Senarai tertutup mengandungi nod yang telah dieksplorasi, dan senarai terbuka mengandungi node yang masih harus diterokai. Dalam setiap lelaran, algoritma memperluaskan nod dengan kos yang paling rendah. Semua nod kanak-kanak diletakkan dalam senarai tertutup dan kos nod kanak-kanak individu dikira. Algoritma ini menghantar nod kanak-kanak dengan kos rendah kembali ke senarai terbuka dan memadam nod kanak-kanak dengan kos yang tinggi. Akibatnya, algoritma itu melakukan carian pintar, berdasarkan kos untuk penyelesaiannya. | Dunia Pengkomputeran |
Quicksort | Ini adalah strategi penyortiran tujuan umum berdasarkan partitioning data array ke array yang lebih kecil.Ia bergantung kepada pendekatan membahagi-dan-menakluk untuk melaksanakan tugasnya. | Tutorial |
Pokok Tidak Setuju | Ini adalah pokok yang meletakkan item data baru di mana pun perlu di dalam pokok tanpa mengira keseimbangan. Kaedah menambah item membuat bangunan pokok dengan lebih cepat tetapi mengurangkan kelajuan akses apabila mencari atau menyusun. | Quora |
Algoritma Membezakan dari Struktur Matematik Yang Lain
Jika anda seperti kebanyakan orang, anda sering mendapati diri anda menggaru kepala apabila ia berkaitan dengan struktur matematik kerana tiada siapa yang seolah-olah tahu bagaimana menggunakan istilah dengan betul. Ia seolah-olah orang sengaja cuba membuat perkara yang sukar! Lagipun, apakah persamaan dan mengapa ia berbeza dengan algoritma? Nah, jangan takut lagi: Jadual berikut menyediakan panduan muktamad kepada struktur matematik yang mungkin anda hadapi tetapi takut untuk bertanya.
Struktur | Deskripsi |
Persamaan | Nombor dan simbol yang, apabila diambil secara keseluruhan, menyamakan nilai tertentu. Persamaan selalu mengandungi tanda yang sama sehingga anda tahu bahawa angka dan simbol mewakili nilai khusus di sisi lain tanda yang sama. Persamaan biasanya mengandungi maklumat pembolehubah yang dibentangkan sebagai simbol, tetapi mereka tidak dikehendaki menggunakan pembolehubah. |
Formula | Gabungan nombor dan simbol yang digunakan untuk menyatakan maklumat atau idea. Formula biasanya membentangkan konsep matematik atau logik, seperti untuk menentukan Pembahagi Bersama Terbesar (GCD) dua bulat (video di Khan Academy menceritakan bagaimana ini berfungsi). Secara umumnya, formula menunjukkan hubungan antara dua atau lebih pembolehubah. Kebanyakan orang melihat formula sebagai persamaan khas khas. |
Algoritma | Satu urutan langkah yang digunakan untuk menyelesaikan masalah. Urutan memberikan satu kaedah unik untuk menangani masalah dengan menyediakan penyelesaian tertentu. Algoritma tidak perlu mewakili konsep matematik atau logik, walaupun persembahan dalam buku ini sering kali jatuh ke dalam kategori itu kerana orang yang paling biasa menggunakan algoritma dengan cara ini. Beberapa formula khas juga merupakan algoritma, seperti formula kuadratik. Untuk suatu proses untuk mewakili suatu algoritma, ia mesti menjadi berikut:
Finite: Algoritma akhirnya harus menyelesaikan masalah. Ditakrifkan dengan jelas: Siri langkah-langkah mesti tepat dan langkah-langkah yang dapat difahami, terutamanya oleh komputer, yang mesti dapat mencipta algoritma yang boleh digunakan. Berkesan: Algoritma mesti menyelesaikan semua kes masalah yang seseorang mendefinisikannya. Algoritma harus sentiasa menyelesaikan masalah yang perlu dipecahkan. Walaupun anda harus menjangkakan beberapa kegagalan, kejadian kegagalan adalah jarang dan berlaku hanya dalam keadaan yang boleh diterima untuk kegunaan algoritma yang dimaksudkan. |
Cara Menakjubkan Menggunakan Algoritma
Orang sebenarnya menggunakan algoritma sepanjang masa. Sebagai contoh, membuat roti bakar adalah contoh algoritma, seperti yang dijelaskan dalam catatan blog ini. Membuat roti bakar bukanlah satu algoritma yang luar biasa, tetapi yang ada dalam jadual berikut, yang menggunakan komputer untuk melaksanakan tugas, adalah.
Petugas | Mengapa Ia Menakjubkan |
Kriptografi | Menjaga keselamatan data adalah pertempuran yang berterusan dengan penggodam sentiasa menyerang sumber data. Algoritma membolehkan anda menganalisis data, memasukkannya ke dalam bentuk lain, dan kemudian mengembalikannya ke bentuk asalnya kemudian. |
Analisis grafik | Keupayaan untuk memutuskan garis terpendek antara dua titik mendapati pelbagai kegunaan. Sebagai contoh, dalam masalah routing, GPS anda tidak boleh berfungsi tanpa algoritma ini kerana ia tidak dapat mengarahkan anda ke jalan-jalan di bandar menggunakan laluan terpendek dari titik A ke titik B. |
Generasi nombor Pseudorandom | Bayangkan bermain permainan yang tidak pernah berubah-ubah. Anda bermula di tempat yang sama dan melakukan langkah yang sama dengan cara yang sama setiap kali anda bermain. Membosankan! Tanpa keupayaan untuk menjana bilangan rawak yang seolah-olah, banyak tugas komputer menjadi sia-sia atau mustahil. |
Penjadualan | Membuat penggunaan sumber adil kepada semua yang berkenaan adalah satu lagi cara di mana algoritma membuat kehadiran mereka dikenali dengan cara yang besar. Sebagai contoh, lampu masa di persimpangan tidak lagi menjadi peranti mudah yang menghitung detik antara perubahan cahaya. Peranti moden menganggap pelbagai masalah, seperti masa hari, keadaan cuaca, dan aliran lalu lintas. Penjadualan datang dalam banyak bentuk, bagaimanapun. Pertimbangkan bagaimana komputer anda menjalankan pelbagai tugas pada masa yang sama. Tanpa algoritma penjadualan, sistem operasi mungkin merangkumi semua sumber yang ada dan memastikan aplikasi anda tidak melakukan apa-apa kerja yang berguna. |
Mencari | Mencari maklumat atau mengesahkan bahawa maklumat yang anda lihat adalah maklumat yang anda inginkan adalah tugas penting. Tanpa keupayaan ini, banyak tugas yang anda lakukan dalam talian tidak mungkin, seperti mencari laman web di Internet yang menjual periuk kopi yang sempurna untuk pejabat anda. |
Sorting | Menentukan pesanan untuk mempersembahkan maklumat adalah penting kerana kebanyakan orang hari ini menderita kelebihan maklumat, dan perlu mengurangkan data terbakar. Bayangkan pergi ke Amazon, mencari lebih daripada seribu periuk kopi untuk dijual, namun tidak dapat menyusunnya mengikut harga atau semakan yang paling positif. Selain itu, banyak algoritma yang kompleks memerlukan data dalam susunan yang sepatutnya berfungsi dengan pantas, jadi penyortiran adalah keperluan penting untuk menyelesaikan lebih banyak masalah. |
Mengubah | Menukar satu jenis data ke data lain adalah penting untuk memahami dan menggunakan data dengan berkesan. Sebagai contoh, anda mungkin memahami berat empayar dengan baik, tetapi semua sumber anda menggunakan sistem metrik. Menukar antara dua sistem membantu anda memahami data. Begitu juga, Fast Fourier Transform (FFT) menukarkan isyarat antara domain masa dan domain kekerapan, membolehkan perkara seperti penghala WiFi anda berfungsi. |
Berurusan dengan Kompleks Algoritma
Anda sudah mengetahui bahawa algoritma adalah kompleks. Walau bagaimanapun, anda perlu tahu bagaimana algoritma kompleks adalah kerana yang lebih kompleks adalah, semakin lama diperlukan untuk dijalankan. Jadual berikut membantu anda memahami pelbagai tahap kerumitan yang disampaikan dalam rangka masa berlalu (dari terpantas hingga paling lambat).
Kerumitan | Deskripsi |
Kerumitan malar O (1) | Menyediakan masa pelaksanaan yang tidak menentu, tidak kira berapa banyak input yang anda berikan. Setiap masukan memerlukan satu unit masa pelaksanaan. |
Kerumitan logaritma O (log n) | Bilangan operasi berkembang pada kadar yang lebih perlahan daripada input, menjadikan algoritma kurang efisien dengan input kecil dan lebih efisien dengan yang lebih besar. Algoritma khas kelas ini ialah pencarian binari. |
Kerumitan linear O (n) | Operasi berkembang dengan input dalam nisbah 1: 1. Algoritma biasa adalah lelaran, apabila anda mengimbas input sekali dan memohon operasi ke setiap elemen. |
Kerumitan linearitma O (n log n) | Kerumitan adalah gabungan antara kerumitan logaritma dan kerumitan linear. Ia adalah tipikal dari beberapa algoritma pintar yang digunakan untuk memerintahkan data, seperti Mergesortsort, Heapsort, dan Quicksort. |
Kompleks kuadratik O (n 2 ) | Operasi berkembang sebagai satu segi bilangan input. Apabila anda mempunyai satu lelaran dalam lelaran lain (disebut lelaran bersarang dalam sains komputer), anda mempunyai kerumitan kuadratik. Sebagai contoh, anda mempunyai senarai nama dan, untuk mencari yang paling serupa, anda membandingkan setiap nama terhadap semua nama lain. Sesetengah algoritma pesanan yang kurang efisien memberikan kerumitan sedemikian: jenis gelembung, semakan pemilihan, dan jenis penyisipan. Tahap kerumitan ini bermakna bahawa algoritma anda mungkin berjalan selama berjam-jam atau bahkan beberapa hari sebelum mencapai penyelesaian. |
Kerumitan padu O (n 3 ) | Operasi berkembang lebih cepat daripada kerumitan kuadratik kerana sekarang anda mempunyai banyak lelaran bersarang. Apabila algoritma mempunyai susunan kerumitan ini dan anda perlu memproses jumlah data yang sederhana (100, 000 elemen), algoritma anda mungkin berjalan selama bertahun-tahun. Apabila anda mempunyai beberapa operasi yang merupakan kuasa input, lazimnya merujuk kepada algoritma seperti yang berjalan dalam masa polinomial. |
Kepekaan eksponen O (2 n ) | Algoritma ini mengambil dua kali bilangan operasi sebelumnya untuk setiap elemen baru ditambah. Apabila algoritma mempunyai kerumitan ini, walaupun masalah kecil mungkin mengambil masa selama-lamanya. Banyak algoritma yang melakukan carian menyeluruh mempunyai kerumitan yang eksponen. Walau bagaimanapun, contoh klasik untuk tahap kerumitan ini ialah pengiraan nombor Fibonacci. |
Factorial complexity O (n!) | Algoritma ini memberikan mimpi ngeri yang rumit kerana banyak kemungkinan gabungan antara unsur-unsur. Cuba bayangkan: Jika input anda adalah 100 objek, dan operasi pada komputer anda mengambil masa 10 -6 saat (kelajuan yang munasabah untuk setiap komputer hari ini), anda memerlukan lebih kurang 10 140 untuk menyelesaikan tugas dengan jayanya (jumlah masa yang mustahil kerana usia alam semesta dianggarkan sebagai 10 14 tahun). Masalah kerumitan faktorial yang terkenal adalah masalah jualan jurugambar, di mana seorang jurujual perlu mencari jalan terpendek untuk melawat banyak bandar dan kembali ke bandar permulaan. |