Bu yeniden düzenleme / sıralama sorununun adı?


10

Sen uzunluğu bir dizi verilir . Dizinin her elemanı K sınıflarından birine aittir . Sen böylece takas işlemlerinin az sayıda kullanarak diziyi yeniden düzenlemek gerekiyordu tüm unsurları gelen aynı sınıfta bir bitişik SubArray oluştururlar her zaman gruplanmış. Örneğin: nK
Diğer üç geçerli düzenleme kalmıştır.

[2,1,3,3,2,2][2,2,2,1,3,3], or[2,1,3,3,2,2][1,2,2,2,3,3], or[2,1,3,3,2,2][3,3,2,2,2,1].

Bu soruna literatürde ne denir? Bunun için etkili bir algoritma var mı?


1
Bu sorunun bir adı olduğundan emin değilim, ancak kesinlikle mümkün. Akla gelebilecek tüm sorunların isimleri yoktur.
Yuval Filmus

2
Uygulamada buna gruplama denir . Klasik algoritmada terminolojinin farkında değilim. (Bu kesinlikle ilginç ve potansiyel olarak zor bir problem! Takas sayısını en aza indirgemek, "grupların en iyi permütasyonunu bul" hissine sahiptir, bu da NP-sert ish hisseder.)
Raphael

Çocuklar, şimdilik teşekkür ederim. Tabii ki problemin çözümü ile ilgileniyorum, ancak zaten çalışıldığını düşündüm, bu yüzden bir referans istemekti.
Marko Bukal

Yanıtlar:


6

Not: Sertlik kanıtıdır ve tamsayı programlama gibi pratik algoritmalar olduğunu düşünüyorum.

Eğer paketi istediğiniz bir BIN_PACKING örneği Verilen numaralarını n 1 , ... , n K içine L boyutu kutuları m 1 , ... , m L , ve sağlanır Σ n i = Σ m j = N , o zaman tasarım olabilir sorunun bir örneği aşağıdaki gibidir:Kn1,,nKLm1,,mLni=mj=N

  • Var sınıfları;K+(N+1)(L1)
  • İlk sınıfları sırasıyla n 1 , , n K boyutlarına sahiptir ve geri kalan sınıfların her biri N + 1 boyutuna sahiptir ;;Kn1,,nKN+1
  • Dizi büyüklüğü aralığa bölünür: boyutu her yuva ( N- + 1 ) 2 , bitişik olarak düzenlenmiş N + 1 sınıflarıyla doludur ve geri kalanı keyfi olarak düzenlenmiştir.
    m1,(N+1)2,m2,(N+1)2,m3,,(N+1)2,mL
    (N+1)2N+1

(N+1)2N


Nm1,,mL(N+1)2(N+1)N+1zaten takas, bu yüzden yapamayız) veya her şeyi bir konum sola veya sağa "kaydırın" (ancak bu her biri "kayar" gerektirir ...
j_random_hacker

N+1N+1N

1

Bunun NP-zor olduğundan da şüpheleniyorum, ancak kanıt için bir fikrin yokluğunda, burada sezgisel bir çözümün optimumluğunu kontrol etmek veya dal ve bağlı bir aramayı budamak için yararlı olabilecek birkaç hızlı hesaplanabilir alt sınır var .

iniijLiijinijLiiO(n)O(Kn)

  1. LiK=2K
  2. Li

Örneğinizde bu sınırların her ikisi de elbette gevşek olan 1 (ikinci durumda yuvarlanabilir) verir.

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.