Bileşik türü ve sadece kısmen sipariş öncelikli bazı nesneler var . Bu öncelik sırasına göre nesneleri seçmek gerekir (yani her zaman en az öğe verim ). Ancak keyfi olarak siparişi tamamlamak yerine, sıranın birden fazla minimal öğe varsa, ilk önce en eski olanı döndürmesi anlamında kararlı olmasını tercih ederim.
Kısmi sıralama ile çalışacak herhangi bir yığın veri yapısı var mı? Veya onunla çalışmak için düzenli öncelik sırasının değiştirilmesi? Ihtiyacım olan algoritma için ortak seçim basit ikili veya 4-ary yığın, ama bu kısmi sipariş ile çalışmaz.
Öncelik değerleri şunları destekler:
- işlemi kullanılarak kısmi sipariş verme . Kısmi sıralama, bu nedenle yanlış ve da yanlış olabilir. Yazdığım bu durumda.a ≼ b b ≼ a a ⋚ ̸ b
- Infima (glb) ve suprema (lub) bulma . maksimumdur y şekilde Y \ preccurlyeq x_i . En fazla n değerinin hesaplanması O (n) zaman alır. Her setten en az (ve en yüksek) var.y ≼ x i n O ( n )
- Kısmi sıralama için doğrusal bir uzantı tanımlanabilir. Öncelik sırası için kullanmak, algoritmanın bu şekilde çalıştığı için kolay çıkış yoludur. Ancak düzen performansı etkiler ve ekleme sırası en kötü durumlardan kaçınmak için en iyi gibi görünmektedir.
Ayrıca bu kullanmak istediğiniz algoritma kuyruktaki tüm öncelikleri en iyi bilmek gerekiyor.
Önceliklerin bazı gerçek dünya anlamları vardır, ancak değişime tabidirler, bu nedenle sahip olabilecekleri diğer özelliklere güvenmek uygun görünmemektedir.
Not: İkili yığınlar kısmi sıralama ile çalışmaz. , ve c ile bir ikili yığın varsayalım ; burada ve ve . Bu sırayla konumlandırıldılar, yani
a (0)
/ \
b (1) c (2)
şimdi d eklenir. Bir sonraki boş pozisyon 3, b'nin sol çocuğu , bu yüzden
a (0)
/ \
b (1) c (2)
/
d (3)
Eğer (ima hangi geçişlilik gelen, ancak hakkında hiçbir şey söylemez ve ) ve , daha sonra ile takas almaz değil daha az olduğu için,. Ama aslında daha az , şimdi ana yığın değişmez tutmaz, ama onunla kıyaslandığında değil; üst minimal değildir.d ≼ c d b d ⋚ ̸ b d b a
Ben binom yığın tarzında bir yığın yığın ormanı işe yarayabileceğinden şüpheleniyorum. Temel olarak yeni değerleri her zaman kök ile karşılaştırmak ve sadece karşılaştırılabilir öğeleri birbirine bağlamak önemlidir. Ormandaki ağaçları rastgele boyutlandırır ve böylece karmaşıklığı yığındaki karşılıklı olarak karşılaştırılamayan kümelerin sayısına bağlı hale getirir. Bir şekilde karmaşıklığın giderilemeyeceğinden şüpheleniyorum (karşılaştırılabilir bir öğeye çarpana kadar karşılaştırmaya devam etmeliyiz) Bir şeyi kaçırmış olabilirim, bu yüzden bunu açık bırakıyorum.
Not: Sıralama kısadır ve bunun için doğrusal bir uzantı tanımlamanın yolları olsa da, zaman damgası eklemek ve ikincil ölçüt olarak kullanmak bunlardan biri değildir . Biz damgası tahsis varsayalım her biri için ve sipariş tanımlandığı olarak IFF ya da ( ve . Daha sonra farklı olduğunu varsayalım , , , bu şekilde ve . Daha sonra vea ≼ ′ a ≼ ′ b a ≼ b b ⋠ a t ( a ) ≤ t ( b ) a b , ancak , bu nedenle ilişki geçişli değildir ve bu nedenle bir sipariş değildir. Bu tür genişletme sadece zayıf siparişler için çalışır, ancak kısmi siparişler için işe yaramaz.
Düzenleme: Ben sadece tanımlanan herhangi bir kümenin infimum olduğunu fark ettim, ama aslında şu anda verimli bir şekilde kuyrukta elemanların infimum almak gerekir. Bu yüzden şimdi, bazı ortak yığın yapılarına alt ağaç infima içeren özel düğümler eklemenin yardımcı olup olmayacağını düşünüyoruz.