Results (
Indonesian) 1:
[Copy]Copied!
Presorting adalah ide lama dalam ilmu komputer. Pada kenyataannya, minat dalam algoritma pengurutanjatuh tempo, ke tingkat yang signifikan, fakta bahwa banyak pertanyaan tentang daftarlebih mudah untuk menjawab jika daftar diurutkan. Jelas, efisiensi waktu algoritmaitu melibatkan penyortiran Mei tergantung pada efisiensi yang algoritma pengurutandigunakan. Demi kesederhanaan, kita menganggap seluruh bagian ini yang daftardiimplementasikan sebagai array, karena lebih mudah untuk menerapkan beberapa algoritma sortinguntuk array.Sejauh ini, kita telah membahas tiga dasar algoritma sorting-urut pilihan,semacam gelembung, dan mengurutkan penyisipan — kuadrat dalam kasus terburuk dan rata-rata,dan dua maju algoritma — mergesort, yang selalu di (nlogn), danquicksort, efisiensi yang juga (nlogn) dalam kasus tapi rata-rata kuadrat dalamkasus terburuk. Ada lebih cepat algoritma pengurutan? Seperti yang kita telah menyatakan diBagian 1.3 (Lihat juga bagian 11,2), tidak umum berdasarkan perbandingan algoritma sorting dapat memiliki thannlognin efisiensi lebih baik kasus terburuk, dan hasil yang sama memeganguntuk rata-rata-kasus efisiensi.1Berikut adalah tiga contoh yang menggambarkan ide presorting. Lebihcontoh dapat ditemukan dalam bagian ini latihan.CONTOH 1Checking elemen keunikan dalam array jika masalah keunikan elemen ini tampak akrab bagi Anda, seharusnya; Kami menganggap brute force algoritma untuk mengatasi masalah di bagian 2.3 (Lihat contoh 2). Algoritma brute forcedibandingkan dengan berbagai elemen pasang sampai kedua-dua elemen yang sama ditemukanatau banyak pasangan yang tersisa. Efisiensi terburuk pada (n2).Selain itu, kita dapat mengurutkan array pertama dan kemudian periksa hanya yang berturut-turutelemen: jika array memiliki unsur-unsur yang sama, sepasang dari mereka harus di sebelah setiaplainnya, dan sebaliknya.Saat menjalankan algoritma ini adalah jumlah waktu yang dihabiskan pada penyortirandan waktu yang dihabiskan untuk memeriksa elemen konsekutif. Karena memerlukan mantandi leastnlogncomparisons dan yang kedua membutuhkan tidak lebih thann−1 perbandingan,ini adalah bagian pengurutan yang akan menentukan efisiensi keseluruhan algoritma. Jadi,Jika kita menggunakan kuadrat di sini algoritma sorting, seluruh algoritma tidak akan lebihefisien daripada brute force satu. Tetapi jika kita menggunakan algoritma pengurutan yang baik, sepertisebagai mergesort, dengan efisiensi yang terburuk di (nlogn), efisiensi terburukalgoritma berbasis presorting seluruh akan juga di (nlogn):CONTOH 2Computing a modus Amodeis nilai yang paling sering terjadi padaDaftar nomor yang diberikan. Misalnya, untuk 5, 1, 5, 7, 6, 5, 7, modus adalah 5. (Jika beberapanilai-nilai yang berbeda terjadi paling sering, salah satu dari mereka dapat dianggap sebagai modus.) Thebrute force pendekatan komputasi mode akan memindai daftar dan menghitungfrekuensi semua nilai yang berbeda, kemudian menemukan nilai dengan frekuensi yang terbesar.Dalam rangka melaksanakan gagasan ini, kita dapat menyimpan nilai-nilai yang sudah temui,bersama dengan frekuensi, dalam daftar terpisah. Setiap kali iterasi, elemen theithDaftar asli dibandingkan dengan nilai-nilai yang telah dihadapi oleh melintasiDaftar ini bantu. Jika pencocokan nilai ditemukan, frekuensi bertambah;Jika tidak, elemen saat ini akan ditambahkan ke daftar nilai-nilai yang berbeda, melihat begitu jauhdengan frekuensi 1.Hal ini tidak sulit untuk melihat bahwa input yang terburuk untuk algoritma ini adalah daftar dengantidak ada unsur-unsur yang sama. Untuk daftar tersebut, elemen itsith adalah unsur-unsur dibandingkan withi−1Bantu daftar nilai-nilai yang berbeda terlihat begitu jauh sebelum sedang ditambahkan ke daftar denganfrekuensi 1. Sebagai hasilnya, jumlah kasus terburuk perbandingan dibuat olehalgoritma dalam menciptakan daftar frekuensi adalah perbandingan additionaln−1 diperlukan untuk menemukan frekuensi terbesar dalam daftar penolong tidak mengubah kelas efisiensi terburuk kuadrat dari algoritma.Sebagai alternatif, mari kita pertama mengurutkan input. Kemudian semua nilai yang sama akanberdekatan satu sama lain. Untuk menghitung modus, semua yang perlu kita lakukan adalah untuk menemukanterpanjang Jalankan berdekatan sama nilai dalam array diurutkan.Analisis di sini mirip dengan analisis contoh 1: saat menjalankanalgoritma akan didominasi oleh waktu yang dihabiskan pada penyortiran sejak sisanyadari algoritma waktu linear (mengapa?). Akibatnya, dengan annlognsort, inimetode yang terburuk efisiensi akan lebih baik asimtotik kelas dari efisiensi worstcase algoritma brute force.Mempertimbangkan masalah 3Searching contoh masalah mencari tertentuvaluevin array nsortable item yang diberikan. Brute force solusinya di sini adalahberurutan pencarian (Bagian 3.1), yang needsncomparisons dalam kasus terburuk. Jikaarray yang diurutkan pertama, kita kemudian dapat menerapkan biner search, yang hanya membutuhkanlog2N + 1 perbandingan dalam kasus terburuk. Dengan asumsi efficientnlogn sebagianUrut, total durasi sebuah algoritma pencarian dalam kasus terburuk akanT (n) = Tsort(n) + Tsearch(n) = (nlogn) + (logn) = (nlogn),mana lebih rendah daripada berurutan Cari. Sama juga akan benar untuk efisiensi averagecase. Tentu saja, jika kita ingin Cari di daftar yang sama lebih dari sekali,waktu yang dihabiskan pada pemilahan baik dibenarkan. (Masalah 4 dalam bagian ini latihanmeminta untuk memperkirakan jumlah minimum pencarian yang diperlukan untuk membenarkan presorting.)Sebelum kita menyelesaikan diskusi kita tentang presorting, kita harus menyebutkan bahwa banyak,Jika tidak sebagian besar, geometris algoritma berurusan dengan set poin menggunakan presorting disalah satu cara atau yang lain. Poin dapat diurutkan berdasarkan salah satu koordinat mereka, atau olehjarak mereka dari baris tertentu, atau dengan beberapa sudut, dan sebagainya. Sebagai contoh,presorting digunakan dalam membagi-dan-menaklukkan algoritma untuk terdekat-pasanganmasalah dan masalah lambung cembung, yang dibahas dalam Bagian 5.5.Selanjutnya, beberapa masalah untuk diarahkan acyclic grafik dapat diselesaikan lebih mudahsetelah topologically penyortiran dwihuruf yang bersangkutan. Masalah menemukanjalur terpanjang dan terpendek dalam digraf tersebut (Lihat latihan untuk bagian 8.1dan 9.3) menggambarkan hal ini.Akhirnya, kebanyakan algoritma berdasarkan teknik yang serakah, yang merupakan subjek dariBab 9, memerlukan presorting masukan mereka sebagai bagian intrinsik dari operasi mereka.
Being translated, please wait..
