Isi kandungan:
- Berurusan dengan carian teks
- Berbeza perkataan
- Menentukan sama ada aplikasi akan tamat
- Mencipta dan menggunakan fungsi satu hala
- Mengalikan bilangan benar-benar besar
- Membahagikan sumber secara sama rata
- Mengurangkan masa pengiraan jarak edit
- Memecahkan masalah dengan cepat
- Memainkan permainan pariti
- Memahami isu-isu spatial
Video: Passwords & hash functions (Simply Explained) 2024
Algoritma sememangnya telah wujud selama berabad-abad, jadi anda akan berfikir bahawa para saintis akan menemui dan menyelesaikan setiap algoritma sekarang. Malangnya, sebaliknya adalah benar. Penyelesaian algoritma tertentu sering menunjukkan beberapa lagi soalan yang tidak dapat diselesaikan oleh algoritma dan itu tidak kelihatan sehingga seseorang membuat penyelesaian.
Algoritma adalah satu siri langkah yang digunakan untuk menyelesaikan masalah, dan anda tidak perlu mengelirukannya dengan entiti lain, seperti persamaan. Algoritma tidak pernah menjadi penyelesaian untuk mencari masalah. Tidak seorang pun akan membuat satu siri langkah untuk menyelesaikan masalah yang belum ada (atau mungkin tidak pernah ada).
Senarai ini adalah mengenai masalah algoritma yang akan menjadi tujuan apabila seseorang mencari penyelesaian untuknya.
Berurusan dengan carian teks
Banyak carian teks melibatkan penggunaan ungkapan biasa - sejenis singkatan yang memberitahu komputer apa yang hendak dicari. Tatabahasa yang digunakan untuk ekspresi biasa bergantung pada bahasa atau aplikasi, tetapi anda dapati ungkapan biasa yang digunakan di beberapa tempat, termasuk pemproses kata, aplikasi e-mel, dialog carian, dan dalam pelbagai tempat lain di mana anda perlu memberikan carian yang tepat terma untuk pelbagai item teks.
Salah satu masalah semasa dengan ungkapan biasa adalah bahawa seolah-olah setiap persekitaran aplikasinya mempunyai satu set peraturan yang sama, tetapi hanya dengan perbezaan yang cukup untuk membuat istilah pencarian keras. Masalah ketinggian bintang yang umum digunakan untuk mencari sama ada sintaks ungkapan biasa yang wujud. Jika ya, algoritma yang dihasilkan akan memungkinkan seseorang untuk mempelajari hanya satu kaedah untuk mewujudkan ungkapan biasa untuk melakukan carian.
Berbeza perkataan
Apabila bekerja dengan aksara, komputer melihat nombor, bukan huruf. Nombor-nombor itu sebenarnya hanya satu siri 0 dan 1s ke komputer dan sebenarnya tidak mempunyai sebarang makna. Menggabungkan aksara menjadi rentetan hanya menjadikan siri 0 dan 1 lagi. Oleh itu, membandingkan dua rentetan, sesuatu yang boleh dilakukan oleh manusia sekilas, boleh mengambil masa dalam komputer, dan kebingungan mungkin antara konjugasi. Sebagai contoh, melainkan jika anda berhati-hati dalam membina algoritma, komputer boleh mengelirukan mendaftar dan mendengar. Lebih penting lagi, komputer memerlukan masa untuk membezakan perbezaan antara kedua-duanya. Masalah kata pemisahan berupaya untuk mencari algoritma yang paling kecil (dan terpantas) (automatis terhingga automaton, DFN, dalam kes ini) untuk melaksanakan pemisahan perkataan.Matlamatnya ialah menerima satu perkataan dan menolak yang lain, dengan memberikan dua perkataan panjang tertentu.
Menentukan sama ada aplikasi akan tamat
Salah satu masalah yang dicadangkan oleh Alan Turing pada tahun 1936 adalah isu sama ada suatu algoritma, diberi gambaran mengenai suatu program dan input, boleh menentukan sama ada program itu akhirnya akan berhenti (menghentikan masalah). Apabila bekerja dengan aplikasi mudah, mudah untuk menentukan dalam banyak kes sama ada program akan berhenti atau terus berjalan dalam gelung yang tidak berkesudahan. Walau bagaimanapun, memandangkan peningkatan kerumitan program, menentukan keputusan menjalankan program dengan mana-mana input yang diberikan menjadi lebih sukar. Mesin Turing tidak boleh membuat penentuan ini; hasilnya ialah kod buggy dengan gelung tak terhingga. Tiada jumlah ujian yang menggunakan teknologi semasa boleh menyelesaikan masalah ini.
Komputer hypercomputer merupakan model pengkomputeran yang melampaui mesin Turing untuk menyelesaikan masalah seperti masalah sepi. Walau bagaimanapun, mesin tersebut tidak mungkin menggunakan teknologi semasa. Jika mereka mungkin, anda boleh bertanya kepada mereka semua jenis yang tidak dapat diungkapkan bahawa komputer tidak boleh menjawabnya sekarang. Artikel ini memberi anda idea yang baik tentang apa yang akan berlaku jika seseorang dapat menyelesaikan masalah ini.
Mencipta dan menggunakan fungsi satu hala
Fungsi satu hala adalah fungsi yang mudah digunakan untuk mendapatkan jawapan dalam satu arah, tetapi hampir mustahil untuk digunakan dengan kebalikan dari jawapan itu. Dengan kata lain, anda menggunakan fungsi sehala untuk mencipta sesuatu seperti hash yang akan muncul sebagai sebahagian daripada penyelesaian untuk kriptografi, pengenalan diri, pengesahan, atau keperluan keselamatan data lain.
Kewujudan fungsi sehala adalah kurang misteri dan lebih banyak bukti. Banyak sistem telekomunikasi, e-dagang, dan e-perbankan kini bergantung kepada fungsi yang kononnya satu cara, tetapi tiada siapa yang benar-benar tahu sama ada mereka benar-benar satu cara. Kewujudan fungsi sehala kini merupakan hipotesis, bukan teori. Sekiranya seseorang dapat membuktikan bahawa fungsi satu hala wujud, isu keselamatan data akan lebih mudah diselesaikan dari perspektif pengaturcaraan.
Mengalikan bilangan benar-benar besar
Bilangan yang benar-benar besar terdapat di banyak tempat. Sebagai contoh, pertimbangkan untuk melakukan pengiraan yang melibatkan jarak ke Marikh, atau mungkin Pluto. Kaedah-kaedah pada masa ini wujud untuk melakukan pendaraban pada bilangan yang sangat besar, tetapi mereka cenderung lambat kerana memerlukan banyak operasi untuk diselesaikan. Masalahnya berlaku apabila bilangannya terlalu besar untuk dimuatkan dalam daftar pemproses. Pada ketika itu, pendaraban mesti berlaku dalam lebih daripada satu langkah, yang melambatkan perkara dengan ketara. Penyelesaian semasa termasuk:
- Algoritma pendaraban kompleks Gauss
- Karatsuba pendaraban
- Toom-Cook
- Transformasi kaedah Fourier
Walaupun banyak kaedah yang sedia ada menghasilkan hasil yang boleh diterima, semuanya mengambil masa, dan apabila anda mempunyai banyak pengiraan untuk melaksanakan, masalah masa boleh menjadi kritikal. Akibatnya, pendaraban bilangan besar adalah salah satu masalah yang memerlukan penyelesaian yang lebih baik daripada yang tersedia hari ini.
Membahagikan sumber secara sama rata
Sumber pembahagian yang sama mungkin tidak begitu sukar, tetapi manusia, yang sememangnya iri, mungkin melihat sumber itu tidak terbahagi kepada sama sekali kecuali anda dapat mencari jalan untuk meyakinkan semua orang bahawa pembahagian itu memang adil. Inilah masalah pemotongan kek elok. Sudah tentu, apabila anda memotong kek, tidak kira betapa adil anda cuba melakukannya, selalu ada persepsi bahawa pembahagian itu tidak adil. Mewujudkan pembahagian sumber yang adil adalah penting dalam kehidupan seharian untuk meminimumkan perselisihan antara pihak berkepentingan dalam mana-mana organisasi, menjadikan semua orang lebih cekap.
Dua penyelesaian sudah wujud untuk masalah pemotongan kek cawan tanpa rasa iri dengan bilangan orang tertentu, tetapi tiada penyelesaian umum wujud. Apabila terdapat dua orang yang terlibat, yang pertama memotong kek itu dan yang kedua memilih sekeping pertama. Dengan cara ini, kedua-dua pihak dijamin pembahagian yang sama. Masalahnya menjadi lebih sukar dengan tiga orang, tetapi anda boleh mencuba penyelesaian Selfridge-Conway untuk masalah ini. Walau bagaimanapun, selepas anda sampai kepada empat orang, tidak ada penyelesaian.
Mengurangkan masa pengiraan jarak edit
Jarak edit jarak antara dua rentetan adalah bilangan operasi yang diperlukan untuk mengubah satu rentetan ke dalam rentetan yang lain. Pengiraan jarak berputar di sekitar operasi jarak Levenshtein, iaitu penyingkiran, penyisipan, atau penggantian watak dalam tali. Teknik khusus ini menggunakan penggunaan dalam antara muka bahasa semulajadi, kuantifikasi urutan DNA, dan pelbagai tempat lain di mana anda boleh mempunyai dua rentetan serupa yang memerlukan beberapa perbandingan atau pengubahsuaian.
Sejumlah penyelesaian untuk masalah ini kini wujud, semuanya agak lambat. Malah, kebanyakan mereka mengambil masa yang eksponen, jadi masa yang diperlukan untuk melakukan transformasi dengan cepat menambah sehingga titik di mana manusia dapat melihat jeda dalam pemprosesan input. Jeda tidak begitu buruk apabila menggunakan pemproses perkataan yang melakukan pemeriksaan kata automatik dan mengubah kata yang salah eja ke dalam yang betul. Walau bagaimanapun, apabila menggunakan antara muka suara, jeda boleh menjadi sangat ketara dan menyebabkan pengendali manusia membuat kesilapan.
Memecahkan masalah dengan cepat
Oleh kerana pembelajaran mesin dimatikan dan kita menghitung lebih banyak pada komputer untuk menyelesaikan masalah, masalah seberapa pantas komputer dapat menyelesaikan masalah menjadi kritikal. Masalah P versus NP hanya bertanya sama ada komputer boleh menyelesaikan masalah dengan cepat apabila ia dapat mengesahkan penyelesaian kepada masalah dengan cepat. Dalam erti kata lain, jika komputer dengan mudah dapat memastikan bahawa tindak balas manusia terhadap masalah adalah betul dalam masa polinomial atau kurang, boleh juga menyelesaikan masalah itu sendiri dalam masa polinomial atau kurang?
Persoalan ini pada mulanya dibincangkan pada tahun 1950 oleh John Nash dalam surat kepada Badan Keselamatan Negara (NSA) dan sekali lagi dalam surat antara Kurt Gödel dan John von Neumann. Selain pembelajaran mesin (dan AI secara amnya), masalah khusus ini adalah kebimbangan terhadap banyak bidang lain, termasuk matematik, kriptografi, penyelidikan algoritma, teori permainan, pemprosesan multimedia, falsafah, dan ekonomi.
Memainkan permainan pariti
Pada mulanya, menyelesaikan permainan mungkin tidak kelihatan seperti yang berguna dalam kehidupan sebenar. Ya, permainan adalah menyenangkan dan menarik, tetapi mereka tidak memberikan latar belakang untuk melakukan sesuatu yang berguna - sekurang-kurangnya, itulah teori umum. Walau bagaimanapun, teori permainan dimainkan dalam banyak senario kehidupan sebenar, kebanyakannya melibatkan proses kompleks yang seseorang dapat memahami lebih mudah sebagai permainan daripada sebagai proses sebenar. Dalam kes ini, permainan membantu orang memahami pengesahan automatik dan sintesis pengawal, antara lain. Anda boleh membaca lebih lanjut mengenai permainan pariti. Malah, anda boleh memainkannya.
Memahami isu-isu spatial
Untuk memasukkan masalah ini ke dalam konteks, fikirkan tentang memindahkan kotak di dalam gudang atau beberapa situasi lain di mana anda perlu mempertimbangkan ruang di mana perkara bergerak. Jelas, jika anda mempunyai banyak kotak di gudang besar dan mereka semua memerlukan forklift untuk dijemput, anda tidak mahu mencuba untuk mengetahui cara menyimpannya secara optimum dengan menyusun semula secara fizikal. Di sinilah anda perlu bekerja melalui masalah ini dengan menggambarkan penyelesaian.
Walau bagaimanapun, persoalannya ialah sama ada semua masalah spatial mempunyai penyelesaian. Dalam kes ini, fikirkan salah satu teka-teki kanak-kanak yang telah anda meletakkan gambar bersama-sama dengan meluncur jubin kecil di sekitar. Ia seolah-olah seolah-olah satu penyelesaian perlu wujud dalam semua kes, tetapi dalam sesetengah keadaan, titik permulaan yang buruk boleh menyebabkan situasi yang tidak ada penyelesaian.
Ahli matematik seperti Sam Loyd sering menggunakan teka-teki untuk menunjukkan masalah matematik yang rumit, beberapa di antaranya tidak mempunyai penyelesaian hari ini. Mengunjungi laman web ini adalah menyeronokkan kerana anda bukan sahaja mendapat hiburan percuma tetapi juga makanan untuk dipikirkan. Isu-isu yang membangkitkan teka-teki ini mempunyai aplikasi praktikal, tetapi ia dibentangkan dengan cara yang menyeronokkan.