Saya membutuhkan struktur data untuk menyimpan nomor elemen, masing-masing terkait dengan waktu berbeda . bervariasi dan walaupun memiliki batas atas teoretis, ini banyak urutan besarnya lebih besar dari apa yang biasanya digunakan.
Melalui aplikasi saya, saya dapat memastikan bahwa:
Elemen yang dimasukkan selalu lebih baru dari semua elemen yang ada, yaitu, jika elemen yang terkait dengan waktu dimasukkan, maka . Elemen dimasukkan satu per satu.
Hanya elemen tertua yang dihapus, yaitu, jika elemen dihapus, maka . Penghapusan sebagian besar terjadi satu per satu, tetapi tidak ada salahnya langsung jika penghapusan elemen ditunda, selama fraksi elemen yang disimpan palsu tetap lebih kecil dari 1.
Selain memasukkan dan menghapus, satu-satunya hal yang perlu saya lakukan adalah menemukan dua elemen tetangga untuk beberapa waktu dengan . Dengan kata lain saya perlu menemukan dua elemen j dan k sedemikian sehingga t_j <\ tilde {t} <t_k dan ∄ l ∈ \ {1,…, n \}: t_j <t_l <t_k .
Kriteria saya untuk struktur data adalah:
- Elemen penemuan seperti dijelaskan di atas harus secepat mungkin.
- Memasukkan dan menghapus harus cepat.
- Struktur data relatif mudah diterapkan.
Selama kita tidak berbicara tentang offset runtime kecil, setiap kriteria memiliki prioritas di atas yang berikutnya.
Penelitian saya sejauh ini telah menghasilkan bahwa jawabannya kemungkinan adalah semacam pohon pencarian self-balancing, tetapi saya gagal menemukan informasi mana dari mereka yang terbaik untuk kasus memasukkan atau menghapus satu sisi, dan mungkin akan dikenakan biaya waktu yang cukup untuk mencari tahu sendiri. Juga, saya hanya menemukan informasi yang tidak lengkap tentang seberapa baik pohon mengatur diri sendiri dan seberapa cepat (misalnya, pohon AVL mengatur diri lebih kaku dari pohon merah-hitam), apalagi bagaimana ini dipengaruhi oleh penyisipan atau penghapusan satu sisi.