Struktur Data isomorfisma


20

Penafian: Saya bukan ahli teori CS.

Berasal dari aljabar abstrak, saya terbiasa berurusan dengan hal-hal yang setara dengan isomorfisme - tetapi saya mengalami kesulitan menerjemahkan konsep ini ke struktur data. Saya pertama kali berpikir bahwa set lurus morfisme bijective teoritis akan mencukupi, tapi saya berlari ke dinding cukup cepat - itu hanya penyandian dan tidak menangkap esensi komputasi dari struktur data.

Apakah ada definisi yang lebih membatasi (tetapi lebih bermanfaat)? (Atau jika tidak, mengapa?) Apakah ada definisi kanonik kategori "struktur data yang dibangun"?

Jawaban:


16

Tidak ada kategori seperti kanonik, untuk alasan yang sama tidak ada kategori perhitungan kanonik. Namun, ada struktur aljabar besar dan berguna pada struktur data.

Salah satu struktur yang lebih umum, yang masih bermanfaat, adalah teori spesies kombinatorial. Spesies adalah functor , di mana adalah kategori himpunan terbatas dan bijections di antara mereka. Anda dapat menganggap spesies sebagai famili struktur yang diindeks oleh serangkaian lokasi abstrak. Ini menjelaskan fungsi atas - keluarga tersebut harus invarian sehubungan dengan penggantian nama label abstrak. Kemudian, kalkulus spesies pada dasarnya memutar ulang metode fungsi penghasil pada tingkat fungsi, untuk menghasilkan sekumpulan struktur data alih-alih hitungan.F:BBBB

Untuk melihat teori ini diimplementasikan dalam bahasa pemrograman, Anda dapat membaca makalah Haskell, Jenis dan fungsi dan jenisnya, oh my! . Saya pikir Sage juga memiliki paket spesies, meskipun tentu saja itu berorientasi pada aljabar komputer daripada pemrograman.


14

Memang, ada gagasan yang berbeda dari isomorfisme yang lebih berguna dalam pemrograman. Ini disebut "kesetaraan perilaku" (kadang-kadang disebut "kesetaraan pengamatan") dan didirikan dengan memberikan "hubungan simulasi" antara struktur data daripada bijections. Ahli aljabar datang dan mendirikan sebuah area yang disebut "tipe data aljabar" dalam Ilmu Komputer, di mana mereka mendorong isomorfisma dan aljabar awal untuk sementara waktu. Akhirnya, Ilmuwan Komputer menyadari bahwa mereka disesatkan. Sebuah makalah yang bagus yang berbicara tentang masalah ini adalah "Pada kesetaraan pengamatan dan spesifikasi aljabar" oleh Sannella dan Tarlecki.

Saya menulis jawaban untuk pertanyaan lain dalam cstheory pada hubungan logis dan simulasi yang berbicara tentang sejarah yang lebih umum dari hubungan simulasi dalam ilmu komputer. Anda dipersilakan untuk membaca itu dan menindaklanjuti referensi yang diberikan di sana. Bab 5 "Kerajinan Pemrograman" Reynolds sangat mencerahkan.

Sebuah buku teks tentang Teori Aljabar Automata oleh Holcombe memiliki kutipan menarik berikut (hlm. 42):

Ada banyak hasil lain yang berkaitan dengan homomorfisme dan quotients ... Sementara mereka adalah kepentingan aljabar independen, mereka belum terbukti sangat berguna dalam studi automata dan bidang terkait. Pada kenyataannya, teori aljabar mesin berbeda dari arah yang diambil dalam teori aljabar lain dalam satu hal penting ... Namun, penekanan dalam teori automata adalah, [bukan] pada mesin apa "terlihat seperti" tetapi apa yang "bisa mereka lakukan" . Kami akan menganggap dua mesin sangat terkait erat jika mereka berdua dapat "melakukan hal yang sama", namun mereka mungkin tidak secara aljabar isomorfik!


Merenungkan Holcombe mengutip lebih banyak lagi, saya perhatikan bahwa dia pada dasarnya mengatakan bahwa aljabar tradisional berkaitan dengan hal-hal yang "terlihat seperti", yaitu struktur mereka, tetapi mereka tidak memiliki pegangan tentang apa yang "dapat mereka lakukan", yaitu perilaku mereka. Ini tampaknya menunjuk pada batasan mendasar aljabar tradisional sehubungan dengan Ilmu Komputer. Sedihnya, saya pikir Kategori Teori juga termasuk dalam kelompok yang sama. Tetapi Kategori Teori memiliki status "sapi suci" dan berbicara tentang batasannya dianggap tidak keren. Semoga, Ilmuwan Komputer akan mengumpulkan cukup keberanian untuk mengatakannya lebih keras.
Uday Reddy

Uday, dapatkah Anda menjelaskan lebih lanjut tentang bagaimana (asimetri?) Dari teori kategori tampaknya tidak cocok?
Łukasz Lew

@ ŁukaszLew, Jika teori kategori cocok, Anda dapat mengatakan bahwa semua ekspresi tipe kalkulus lambda yang diketik dengan variabel tipe X adalah functors. Tetapi mereka bukan, misalnya, F (X) = (X -> X) bukan sebuah fungsi.
Uday Reddy

7

Daripada bertanya bagaimana kita dapat memperkuat / melemahkan gagasan isomorfisme, kemungkinan lain adalah bertanya: Apa gagasan yang tepat tentang kesetaraan antara struktur komputasi, dan apa struktur matematika yang mendasari gagasan ini.

Satu keluarga besar struktur adalah coalgebras. Struktur seperti daftar, pohon, automata, baik varietas terbatas dan tak terbatas dapat digambarkan sebagai coalgebras. Kita kemudian dapat mempelajari homomorfisme atau isomorfisme di antara coalgebras.

Namun, bahkan homomorfisme antar batubara tidak menceritakan keseluruhan cerita. Anda mungkin merasa terbantu untuk mencari simulasi, bisimulasi, dan hubungan logis lainnya. Jika Anda benar-benar lebih suka pendekatan aljabar (yang bertentangan dengan yang relasional) koneksi Galois adalah salah satu pilihan. Inilah beberapa poin awal.


2

Penafian: Saya tidak yakin saya mengerti pertanyaan Anda. Apakah Anda ingin berbicara tentang isomorfisme antara dua struktur data, atau antara dua "spesifikasi struktur data"? (Ini kadang-kadang disebut Tipe Data Abstrak.)

Jika Anda mempertimbangkan model probe sel, maka saya pikir konsep isomorfisme mudah muncul. Itu karena model probe sel memodelkan perhitungan dengan pohon keputusan, sehingga isomorfisme mudah untuk didefinisikan. Model probe sel akan membantu, saya pikir, baik jika Anda mempertimbangkan isomorfisme antara implementasi struktur data, dan jika Anda mempertimbangkan spesifikasi struktur data.

Untuk informasi tentang model penyelidikan sel, lihat misalnya survei Miltersen. ( Kompleksitas Sel Probe: Survei )

Jika Anda mengatakan lebih banyak tentang mengapa Anda perlu mendefinisikan isomorfisme di antara struktur data, dimungkinkan untuk memberikan lebih banyak bantuan. Jangan ragu untuk mengirimi saya pesan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.