Aşağıdaki iki işleme tabi tutulan bir dizi öğeyi tutabilen veri yapıları hakkında ne bilinmektedir?
- Push (x): dizinin sonuna x ekleyin ve dizideki konumu için bir tanımlayıcı döndürün
- Özü (S): sırasız bir tanımlayıcı kümesi verilir, bu konumlardaki öğeleri sıradan çıkarın ve kaldırılan öğelerin listesini sıra sırasına göre döndürün
İsterseniz bunu bir istif veya bir ayırma işlemi olan ve iki istife ayıran bir sıra olarak düşünebilirsiniz: çıkartma işlemi bir pop veya dequeue işlemi uygulamak için kullanılabilir ve çıkartılmış öğe dizisi de konulabilir. farklı bir istif veya sıraya geri dönelim.
Zaten bildiklerim: bir sekans, her bir tanımlayıcının bir bağlantılı liste düğümüne bir gösterici olduğu ve iki düğüm de ilişkisiz iki öğenin konumları arasında hızlı bir karşılaştırma yapmayı sağlayan bir konum numarası saklayan, iki kat bağlantılı bir liste olarak korunabilir. sırayla Veri yapısı ilerledikçe konum numaralarını güncellemek zor değildir, böylece hepsi maksimum değerinin tamsayılarıdır; burada n , listedeki geçerli öğe sayısıdır. Bu veri yapısıyla, bir çıkarma işleminin tek zor kısmı, çıkartılan öğeleri konum numaralarına göre sıralamaktır. Bir ekstraksiyon k öğeleri alır Ç ( k √örneğin, FOCS 2002'den Han ve Thorup'un tamsayı sıralama algoritmasını kullanarak beklenen rasgele zaman ve bir basma işlemi sabit zaman alıyor.
Bilmiyorum: ekstraktı sürede ele almak ve sürekli zamanda itmek mümkün mü? Bu konuda literatür var mı? Tamsayılı sıralama kadar zor mu?
Motivasyon: Bu, aynı zamanda grafik çiziminde uygulamalara sahip olan Coffman-Graham zamanlama algoritmasında öğeleri sıralamak için gereken temel adımdır. Coffman-Graham'in zor kısmı bir sözlükbilimsel topolojik düzendir. Bu, her bir farklı borç için, kalan başlıklar tarafından oluşturulan alt çizelgede söz konusu olan bir köşe dizisinin tutulmasıyla yapılabilir. Ardından, ilk tepe noktasını sıfıra aykırı köşeler dizisinden tekrar tekrar kaldırın ve topolojik düzene ekleyin; v'nin komşularını daha önce ait oldukları derecelerden çıkarın ve bir sonraki daha küçük derece için dizinin üzerine itin. Yani bir O ( k ) Bu veri yapısındaki özüt işlemlerinin süresi, Coffman-Graham algoritmasının doğrusal bir zaman uygulamasına yol açacaktır.
İlk başta sorduğumdan beri 1976'da Sethi'nin Coffman-Graham algoritmasının doğrusal zamanda uygulanmasına izin veren bir yazı buldum ve onu Coffman-Graham algoritması hakkındaki Wikipedia makaleme ekledim , bu yüzden orijinal motivasyon daha az anlamlıydı. Yine de cevabın ne olduğunu hala merak ediyorum.