Bir Dizeyi Homojenleştirmenin Karmaşıklığı


10

Motivasyon : Veri sürümü oluşturma araçları geliştirirken, bir tamsayı kümesini diğerine götüren bir dönüşüm dizisi oluşturarak iki tamsayı kümesini "ayırmak" için algoritmalar aradık. Bu sorunu mesafeyi düzenlemek, takas ile gruplamak ve minimum ortak dize bölümü gibi görünen çok doğal soruna indirgedik .

Sorun : Bize bir dize, yani bir dizi harf veriliyor ve amacımız onu minimum maliyetle homojenleştirmek . Yani, benzer tüm harfler yan yana olacak şekilde yeniden düzenlenmiş bir sıra istiyoruz.

İzin verilen tek işlem , benzer harflerin bir dizisini almak ve bu diziyi herhangi bir yere taşımak ve bana 1 birim maliyeti.

Bu sorunun karmaşıklığını karakterize eden herhangi bir yardım çok takdir edilecektir!

Örnek :

  • aabcdab: Giriş
  • bcd aa ab: İlk aa'yı "d" den hemen sonraki konuma taşıdıktan sonra
  • b bcdaaa: Sondaki b'yi ilk konuma getirdikten sonra

Ortaya çıkan dize homojen olduğu için 2 maliyetimiz var.

Çıktı ile ilgili olarak hiçbir şekilde kısıtlanmadığımızı unutmayın: homojen olduğu sürece, herhangi bir özel sipariş sağlamamız gerekmiyor.

Yanıtlar:


6

Minimum İsabet Setinden düşürülerek bu problem NP-tamamlanmıştır .

USsS,sUHUsS,hHhs

Azaltma aşağıdaki gibidir:

  • uUussSusu

  • s|s|1suusu

  • ususssSssu

  • |s|+|H|H

Minimum vuruş seti NP-Hard olduğundan, bir ipin optimum şekilde homojenleştirilmesi de mümkündür. Hareketler bir tanık oluşturduğundan NP-Complete.


Bu zarif bir indirim - teşekkürler!
Aditya Parameswaran

2

Dizenizdeki bir harften diğerine, dizenin homojenliği için bir ölçü olarak görebileceğiniz değişiklik sayısına bakın. Bir alt dizinin her (yararlı) hareketinde, taşıdığınız alt diziden önce ve sonra iki ayrı harf varsa, bu sayıyı bir azaltırsınız. Aksi takdirde homojenliği iki oranında azaltırsınız.

Bu nedenle, k değişikliklerine sahip bir dize için en çok k - l + 1 hareketine ihtiyacınız vardır; burada l, dizedeki farklı harflerin sayısıdır, çünkü sonunda l - 1 değişiklikleri kalacaktır. N uzunluğunda bir dize en fazla n-1 harf değişikliğine sahip olabileceğinden, en fazla n - l hareketine ihtiyaç duyabilir . Mümkün olan en az sayı bunun yarısıdır.

Bu nedenle en iyi strateji, abbba formunun alt dizilerini aramak ve bbb'yi oradan uzaklaştırmak gibi görünüyor. Hiç kimse kalmadığında, her şeyi hareket ettir. Yine de yeni abbba durumları yaratan bu işlemleri yapmaya çalışabilirsiniz, ancak bence kazanç çok az olacak. Optimal biri olarak birçok hamle iki kat en fazla kullanımlar (inhomojenitesinin artırmak aptal hamle olmadan) en kötü strateji olduğundan, elde edebilecekleri azar cevap olarak çabasıyla hiçbir makul ilişkili olarak görünüyor isaacg karakterizasyonu olarak birlikte NP-sert öneriyor. Tabii ki, gerçekten sadece hareket operasyonlarının sayısını saymazsanız ve hangi hamlelerin yapılacağına karar verme zamanını umursamıyorsanız.

Bu nedenle en kötü durum, her harfin selefinden farklı olduğu bir dizedir (ve abbba bonusları alamazsınız). Burada, dizenin uzunluğu boyunca doğrusal olan ve neredeyse bu uzunluğa eşit olan birkaç işleme ihtiyacınız vardır.

Örneğinizde, 5 -> 4 -> 3 değişikliğiniz vardır ve 3, harf sayısı (4) eksi 1'e eşittir.

Yan not: Yalnızca iki boyutlu bir alfabe için, dizenin önekini veya sonekini taşımayan her hareket, homojenliği ikiye indirir ve böylece her makul hareket dizisi en uygunudur.


Bir hamlenin değişiklik sayısını en fazla 2 azaltabileceğini, ancak aslında değişiklik sayısını 3'e kadar azaltabileceğini iddia edersiniz. Örneğin, ilk "bc" alt dizesini ikinci alt dizge "bc" nin ortası, dizgideki değişiklik sayısının 5'ten 2'ye düşmesine neden olur.
Mikhail Rudoy

Merhaba, @MikhailRudoy. Sorular, operasyonun "benzer harflerin bir alt sırasını al" olduğunu belirtir, bu yüzden bc'ye anladığım kadar izin verilmez.
Peter Leupold

Bu detayı tamamen kaçırdım. Bu durumda haklısın.
Mikhail Rudoy

Peter haklı: Bu hamlelere izin verilmiyor.
Aditya Parameswaran

Re: cevabın geri kalanı - gerçekten, bu gözlemler yeniden sınırlar, alfabe boyutu 2 vakasının iyimserliği ve herhangi bir noktada ne yapılacağı için sezgisel taramalar değerlidir. En kötü durumdaki herhangi bir hareket sadece bu harf dizisine fayda sağladığı ve en iyi durumda abbba'nızda olduğu gibi en fazla iki harf dizisini birleştirdiği için, 2 yaklaşım doğal görünüyor.
Aditya Parameswaran
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.