2016-10-21 21 views
5

K binary sayılarımız olduğunu varsayalım (her biri aynı uzunlukta). Bu K ikili sayılarını benzersiz bir şekilde tanımlamak için gereken minimum sayıda bit bulmamız gerekir (sürekli olmamak gerekir). Örneğin 100, 110, 1 bit (ikinci pozisyonda) ile ayırt edilebilir. 111, 110, 101, ayırt edilmesi için 2 bit gerekir.Bir ikili sayı grubunu ayırt etmek için minimum sayıda bit bulmak üzere algoritma

+0

Girişte kısıtlamalar var mı? Sayılar 32 bit, 64 bit mi, keyfi uzunluk mu? K için izin verilen değerler nelerdir? –

+0

Sorun, girdileri sınıflandırabilen bir karar ağacı oluşturma ile ilgili. Belki de ID3 algoritmasına bir göz atın: https://en.wikipedia.org/wiki/ID3_algorithm –

+2

Gönderinizi tahrif etmeyin. – dorukayhan

cevap

0

Minimum Set Cover kümesi U ve bir dizi alt kümeleri U arasında S açısından tanımlanmaktadır. U numaralı her öğenin, S'daki kümelerden birinin (en az) tarafından karşılanması gerekir.

Set Cover'u çözebilirseniz, bu sorunu da çözebilirsiniz. Bir dizi U her girişin, u i, j (i < j olduğu), çiftler tekabül (i, j) ve (j, i) arasında inşa varsayalım senin k numaraları (dolayısıyla | U | = k (k - 1)/2). Şimdi n setleri, S inşa , ..., n S , n olası bit pozisyonlarına karşılık gelen. S j farklı çiftler grubuna karşılık gelen tüm elemanların alt kümesidir. sayılar k, l pozisyon j farklıdır Yani, eğer, o zaman u k, l ∈ S j ayarlayın. Bununla birlikte, bu azalma ile NP-zor bir sorundur. Açgözlü yaklaşımla, minimum sayıda bit için sınırlı bir yaklaşım elde edebilirsiniz, ancak tam olarak minimum değil.

+0

Redüksiyonunuzu yanlış yönde yaptınız. Bu sorunu çözmek için set setini kullanmayın, minimum set kapak çözmek için bu sorunu kullanmanız gerekir. –

3

Bu ikilileri bir dizi doğrusal denklem olarak görebiliriz. bu ikili varsa Yani, örneğin için,:

Buradan
x1 + x2 + x3 + x4 = y1 
x1 + x2 + 0 + 0 = y2 
x1 + 0 + 0 + x4 = y3 

, biz ekstra ortadan kaldırmak için o denklemleri azaltmak için Gaussian elimination kullanabilirsiniz fark: 1111, 1100, 1001, biz takip kendilerini temsil edebilir değişkenler (yukarıdaki örnekte, x1). İndirgemenin sonucu K değişken değişkenleri olacak ve orijinal sorunun sonucunu elde etmek için bir ek değişken çıkarıyoruz.

+0

Bu, farklı olan tüm bitleri verecektir. Örneğin, örneğinizde bu, yalnızca ayırt etmek için gereken minimum miktarın 2 olduğu bir değişkeni ortadan kaldırır. –

+0

@PapudeetBerandhi Cevabımda bahsettiğim, son cevabı almak için her zaman Gauss eleme sonucundan bir parça daha alabilirsiniz. –

+0

@PapudeetBerandhi, Pham, Bence soruyu yanlış anladım - lütfen bana sadece iki bitin nasıl ayrıldığını anlatayım * [1111, 1100, 1001] '(ve hangileri)? Ayrıca, bu örneğe '1000' eklediğimizde, Gauss eleme ve ayırt edici bitler açısından nasıl farklı olurdu? –