Saya cukup akrab dengan tempat menggunakan Stacks, Antrian, dan Pohon dalam aplikasi perangkat lunak tapi saya belum pernah menggunakan Deque (Double Berakhir Antrian) sebelumnya. Di mana saya biasanya bertemu mereka di alam liar? Apakah akan berada di tempat yang sama dengan Antrian tetapi dengan gribbilies ekstra?
data-structures
Insinyur Dunia
sumber
sumber
Jawaban:
Salah satu cara deque digunakan adalah untuk "umur" item. Biasanya digunakan sebagai fitur undo atau history. Tindakan baru dimasukkan ke dalam deque. Item tertua ada di depan. Batas pada ukuran deque memaksa barang-barang di bagian depan dihilangkan pada beberapa titik ketika barang-barang baru dimasukkan (menua barang tertua). Kemudian memberikan cara cepat untuk mengakses kedua ujung struktur karena Anda langsung tahu item tertua dan terbaru untuk menghapus bagian depan dan melakukan tindakan tertua di O (1) atau membatalkan dalam waktu O (1).
sumber
Pertanyaan yang sangat bagus Saya tidak ingat kursus CS 102 kami menyebutkan satu aplikasi untuk antrian berujung ganda.
Sampai hari ini, satu-satunya aplikasi yang saya tahu adalah penjadwal mencuri pekerjaan yang disebutkan dalam artikel Wikipedia .
Ini pada dasarnya berfungsi sebagai berikut:
Dalam model prosedural berulir tunggal normal, setiap panggilan fungsi mendorong catatan aktivasi pada apa yang disebut tumpukan panggilan . Catatan aktivasi berisi variabel dan parameter lokal panggilan itu. Setelah panggilan ke metode selesai ("kembali"), catatan aktivasi terakhir muncul dari tumpukan panggilan.
Ini sangat penting karena begitulah cara rekursi diimplementasikan: struktur rekursi diwakili dalam keadaan saat ini dari tumpukan panggilan.
Saat memparalelkan algoritma rekursif, kita dapat mengeksploitasi properti ini dengan mengganti tumpukan panggilan dengan antrian panggilan. Setiap utas dalam perhitungan mendapatkan antrian panggilannya sendiri dan mendorong serta memunculkan catatan aktivasi seperti dalam eksekusi berurutan.
Tetapi begitu sebuah utas telah menyelesaikan pekerjaannya (= antrian panggilannya kosong), itu mencuri pekerjaan dari utas lainnya dengan menghapus catatan aktivasi dari antrian panggilan utas itu dengan menghapus dari ujung yang “salah”.
Pada dasarnya, antrian panggilan bertindak sebagai dua tumpukan panggilan yang sekarang melayani dua utas.
sumber