Aşağıdaki sorunu düşünün:
Girdi : tamsayıların değerlerini listeler
Hedef : her iki listede de bir tamsayısı olup olmadığını belirlemenizi sağlar .
Her iki listesinin boyutunda olduğunu varsayalım . Bu sorun için deterministik, doğrusal zaman algoritması var mı? Başka bir deyişle, bu problemi rasgele kullanmadan zamanında belirleyici olarak çözebilir misiniz ?
Ne yazık ki, liste öğelerinin hepsinin küçük olduğunu varsayamazsınız.
Rasgele bir algoritma kullanarak beklenen zamanda nasıl çözüleceğini görebiliyorum : rastgele bir 2-evrensel karma işlevi , öğelerini bir karma tabloya ( karma işlevi olarak kullanarak) depolayın ve sonra bakın her elemanıhashtable içinde olup olmadığını görmek için. Beklenen çalışma süresi. Ancak, deterministik bir algoritmanın nasıl bulunacağını göremiyorumçalışma süresi. Bunu derandomize etmeye çalışır ve tek bir hash işlevini düzeltirseniz, bu yordamın çalışmasına neden olan en kötü durum girdisi olacaktır.saati. Bulabildiğim en iyi deterministik algoritma, değerleri sıralamayı içerir, ancak bu doğrusal zaman olmayacaktır. Doğrusal çalışma süresine ulaşabilir miyiz?
Ayrıca, tüm liste öğelerinin aralıkta tamsayı olduğunu varsayarsanız, doğrusal zamanda nasıl çözüleceğini görebilirim (temel olarak, sıralama saymak) - ama bunu kabul edemediğimizde genel durumda ne olacağı ile ilgileniyorum.
Cevabı hesaplama modeline bağlıysa, RAM modeli aklına sıçrar, ancak makul bir hesaplama modeli için sonuçlarla ilgilenirim. farkındayım eleman benzersizliği için karar ağacı algoritmaları için daha düşük sınırlar , ancak bu kesin değildir, çünkü bazen bir zaman bile olsa doğrusal zaman algoritmaları bulabiliriz karar ağacı modeline bağlı.