Mã nhị phân có ràng buộc


7

Giả sử tôi có một bảng chữ cái của n ký hiệu. Tôi có thể mã hóa chúng một cách hiệu quả với các -bits. Chẳng hạn nếu n = 8: A: 0 0 0 B: 0 0 1 C: 0 1 0 D: 0 1 1 E: 1 0 0 F: 1 0 1 G: 1 1 0 H: 1 1 1 log2n







Bây giờ tôi có các ràng buộc bổ sung mà mỗi cột phải chứa tối đa các bit p được đặt thành 1. Ví dụ cho p = 2 (và n = 8), một giải pháp có thể là:
A: 0 0 0 0
B: 0 0 0 0 1
C: 0 0 1 0 0
D: 0 0 1 1 0
E: 0 1 0 0 0
F: 0 1 0 1 0
G: 1 0 0 0 0
H: 1 0 0 0 1

Cho n và p, thuật toán có tồn tại để tìm một mã hóa tối ưu (độ dài ngắn nhất) không? (và có thể chứng minh rằng nó tính toán một giải pháp tối ưu không?)

BIÊN TẬP

Hai cách tiếp cận đã được đề xuất cho đến nay để ước tính giới hạn thấp hơn về số lượng bit m. Mục tiêu của phần này là cung cấp một phân tích và một sự kết hợp của hai câu trả lời, để giải thích sự lựa chọn cho câu trả lời tốt nhất .

Cách tiếp cận của Yuval dựa trên entropy và cung cấp giới hạn dưới rất đẹp:lognh(p/n) Ở đâu h(x)=xlogx+(1x)log(x).

Cách tiếp cận của Alex dựa trên tổ hợp. Nếu chúng ta phát triển lý luận của mình nhiều hơn một chút, cũng có thể tính được giới hạn dưới rất tốt:

Được m số lượng bit log2(n), tồn tại một sự độc đáo ksao cho Người ta có thể tự thuyết phục rằng một giải pháp tối ưu sẽ sử dụng từ mã với tất cả các bit thấp, sau đó các từ mã có độ cao 1 bit, cao 2 bit, ..., k bit cao . Đối với các ký hiệu còn lại để mã hóa, không rõ ràng về việc sử dụng từ mã nào là tối ưu để sử dụng nhưng chắc chắn là trọng số của mỗi cột sẽ lớn hơn mức có thể nếu chúng ta chỉ có thể sử dụng các từ mã có bit cao và có cho tất cả . Do đó, người ta có thể hạ thấp ràng buộc với

1+(m1)+...+(mk)<n1+(m1)+...+(mk)+(mk+1)
n1(m1)...(mk)wik+1|wiwj|1i,jp=max(wi)
pm= =0+1+(m-12)+...+(m-1k-1)+(n-1-(m1)-...-(mk))(k+1)m

Bây giờ, cho và , cố gắng ước tính . Chúng ta biết rằng vì vậy nếu , thì . Điều này cho giới hạn dưới cho . Đầu tiên tính sau đó tìm lớn nhất sao chonpmpmpp<pm'm'<mmpmm'p<pm'

Đây là những gì chúng ta có được nếu chúng ta vẽ, với , hai giới hạn dưới cùng nhau, giới hạn dưới dựa trên entropy màu xanh lá cây, một giới hạn dựa trên tổ hợp lý do ở trên màu xanh lam, chúng ta có được:n= =1000nhập mô tả hình ảnh ở đây

Cả hai trông rất giống nhau. Tuy nhiên, nếu chúng ta vẽ sự khác biệt giữa hai giới hạn dưới, rõ ràng là giới hạn dưới dựa trên lý luận tổ hợp là tổng thể tốt hơn, đặc biệt là đối với các giá trị nhỏ của .p

nhập mô tả hình ảnh ở đây

Tôi tin rằng vấn đề xuất phát từ thực tế là bất đẳng thức yếu hơn khi trở nên nhỏ hơn, bởi vì các tọa độ riêng lẻ trở nên tương quan với nhỏ . Tuy nhiên, đây vẫn là giới hạn dưới rất tốt khi .H(X)ΣH(XTôi)ppp= =Ω(n)

Đây là tập lệnh (python3) đã được sử dụng để tính các giới hạn dưới:

from scipy.misc import comb
from math import log, ceil, floor
from matplotlib.pyplot import plot, show, legend, xlabel, ylabel

# compute p_m 
def lowerp(n, m):
  acc = 1
  k = 0
  while acc + comb(m, k+1) < n:
    acc+=comb(m, k+1)
    k+=1

  pm = 0
  for i in range(k):
    pm += comb(m-1, i)

  return pm + ceil((n-acc)*(k+1)/m)

if __name__ == '__main__':
  n = 100

  # compute lower bound based on combinatorics
  pm = [lowerp(n, m) for m in range(ceil(log(n)/log(2)), n)]
  mp  = []
  p = 1
  i = len(pm) - 1
  while i>= 0:
    while i>=0 and pm[i] <= p: i-=1
    mp.append(i+ceil(log(n)/log(2)))
    p+=1
  plot(range(1, p), mp)

  # compute lower bound based on entropy
  lb = [ceil(log(n)/(p/n*log(n/p)+(n-p)/n*log(n/(n-p)))) for p in range(1,p)]
  plot(range(1, p), lb)

  xlabel('p')
  ylabel('m')
  show()

  # plot diff
  plot(range(1, p), [a-b for a, b in zip(mp, lb)])
  xlabel('p')
  ylabel('m')
  show()

1
@DW các ràng buộc là khá như trạng thái của bạn. mỗi cột phải chứa tối đa p bit được đặt thành 1. tức là. bit 1 tại mỗi vị trí của tất cả các khóa được chọn không vượt quá p. Nhưng tôi nghĩ bước đầu tiên vẫn là đếm dung lượng của mỗi chiều rộng bit.
Terence Hang

user4957842, tôi nghi ngờ bản chỉnh sửa mới nhất của bạn nên được đăng dưới dạng tự trả lời. Tôi nghĩ rằng nó đứng một mình như một câu trả lời cho câu hỏi của bạn. Bạn có đồng ý không? Nếu vậy, vị trí thích hợp cho nó nằm trong hộp câu trả lời, thay vì trong câu hỏi - điều đó sẽ có ý nghĩa hơn nhiều đối với những độc giả tương lai gặp phải điều này (và cũng cho phép cộng đồng bỏ phiếu cho câu trả lời của bạn). Tôi đánh giá cao việc bạn đang chia sẻ phân tích bạn đã làm - cảm ơn bạn. Tôi khuyến khích bạn đăng tài liệu đó như một câu trả lời, và sau đó xóa nó khỏi câu hỏi. Bạn nghĩ sao? Điều đó có vẻ như nó có ý nghĩa với bạn?
DW

@DW Phần EDIT chỉ đưa ra một câu trả lời giữa hai câu trả lời được đề xuất để giải thích sự lựa chọn cho câu trả lời tốt nhất . Vì vậy, tôi không muốn đặt nó như một câu trả lời tự. Nhưng tôi hoàn toàn đồng ý rằng nó thiếu rõ ràng cho người dùng trong tương lai, do đó tôi đã làm rõ mục tiêu của phần này và cung cấp các liên kết đến các câu trả lời tương ứng. Tôi tin rằng bây giờ nó rõ ràng hơn một chút.
dùng4957842

Câu trả lời:


3

Có một giới hạn thấp hơn mà chúng ta có thể xây dựng, sẽ giải quyết các trường hợp như những gì @ user3017842 đã đề cập trong nhận xét của họ về câu trả lời của Yuval. (Các trường hợp . Đặc biệt nhỏ) Giả sử chúng ta biết đã: Sau đó chúng ta có bit tổng cao trên tất cả các từ mã. Vì chúng tôi quan tâm đến các trường hợp nhỏ, chúng tôi xem các bit cao này là tài nguyên giới hạn của chúng tôi và muốn xây dựng mã với nó (và xem chúng tôi có thể rút ra bao nhiêu từ mã). Chúng ta có thể có 1 từ mã với tất cả 0, sau đó từ mã với 1, sau đó với hai 1, v.v. Nếu chúng ta gọi số bit cao nhất trong từ mã , thì pmpmpm(m2)k

pm= =01+1m+2(m2)+...ΣTôikTôi(mTôi)
Trong khi số lượng từ mã của chúng tôi n bị ràng buộc tương tự bởi
nΣTôik(mTôi)
Nếu chúng ta nhìn vào trường hợp pm, sau đó k2đã được ngụ ý bởi sự bất bình đẳng đầu tiên. (pm= =m2= =m+2(m2)). Vì vậy, mã sẽ bao gồm0từ m Độc thân-1-từ và (p-1)m/2 hai-1-từ ngữ. Như vậy
n1+m+(p-1)m/2
hoặc đảo ngược
m2(n-1)p+1.
Điều này sẽ mang lại giới hạn dưới chặt chẽ của m5 về ví dụ bạn cung cấp, nhưng như đã đề cập trước đây, có lẽ sẽ chỉ rất hữu ích trong khi pm (hoặc là pn).

1
Vui lòng xem phần EDIT của bài đăng chính để xem tại sao câu trả lời của bạn thắng!
dùng4957842

4

Dưới đây là một cấu trúc ràng buộc thấp hơn và phù hợp không có triệu chứng, ít nhất là đối với một số phạm vi của các tham số. Biểu thị bởim số lượng cột và giả sử cho đơn giản pn/2.

Chúng tôi bắt đầu với một giới hạn thấp hơn trên m. Để choXlà mã hóa của biểu tượng được chọn thống nhất một cách ngẫu nhiên. Để choX1,Giáo dục,Xm là tọa độ riêng và để wTôip là trọng lượng của Tôicột thứ. Sau đó

đăng nhậpn= =H(X)ΣTôi= =1mH(XTôi)= =ΣTôi= =1mh(wTôi/n)mh(p/n).
vì thế
mđăng nhậpnh(p/n).
Đây H là entropy của một biến ngẫu nhiên H(X)= =-ΣxPr[X= =x]đăng nhậpPr[X= =x]h là hàm entropy h(x)= =-xđăng nhậpx-(1-x)đăng nhập(1-x). (Bạn có thể sử dụng bất cứ cơ sở nào cho logarit mà bạn muốn.)

Việc xây dựng phù hợp không có triệu chứng, sẽ làm việc cho p= =Ω(n), chọn m lớn hơn một chút so với giới hạn dưới này và chọn sơ đồ mã hóa ngẫu nhiên, mỗi bit được đặt thành 1 với một số xác suất q/n nhỏ hơn một chút p/n. Chọn các tham số chính xác, chúng ta sẽ nhận được kết quả này trong một mã hóa hợp pháp (tất cả các từ mã đều khác nhau và tất cả các trọng số cột đều nhiều nhấtp) với xác suất dương.


Đẹp dưới ràng buộc. Tại sao công việc xây dựng phù hợp chop= =Ω(n)? Có cách nào dễ dàng để tin điều đó ngoài việc ràng buộc xác suất nhận được mã hóa không hợp lệ khimđược chọn gần giới hạn dưới?
Ariel

Kinh nghiệm cho tôi biết rằng nó có cơ hội làm việc cao, nhưng bạn không thể biết chắc chắn mà không cần cố gắng.
Yuval Filmus

Tôi tin rằng giới hạn dưới này là rất tốt khi tọa độ cá nhân X1,X2,...,Xm hầu như độc lập (vì bất bình đẳng H(X)ΣH(XTôi)sẽ gần với một đẳng thức). Đây có thể là trường hợp khip đủ gần để n/2. Tuy nhiên khipvẫn còn nhỏ, đây không phải là trường hợp nữa. Xem xét ví dụ trường hợp cực đoan khip= =1.
dùng4957842

1
Khi nào p= =1 rõ ràng là số lượng bit là n-1(như đề xuất trong câu trả lời của Alex Meiburg). Tuy nhiênn-1-tôiognh(p/n))~n/tôiogn. Giới hạn dưới trở nên không chính xác khip vẫn còn nhỏ nđang trở nên lớn Bên cạnh đó, cho nhỏp nhu la p= =1, việc xây dựng được đề xuất sẽ không hoạt động tốt vì vấn đề sinh nhật nổi tiếng. Tuy nhiên, đây vẫn là một cách tiếp cận rất hay, đặc biệt là khip= =Ω(n)!
dùng4957842

Tôi đã thực hiện một cuộc so sánh với một giới hạn thấp hơn được suy luận từ lý do tổ hợp được đề xuất trong một câu trả lời khác. Nó chỉ ra rằng giới hạn dưới của bạn yếu hơn một chút, đặc biệt là khiptrở nên nhỏ hơn Xin vui lòng xem chi tiết của comparaison trong phần EDIT của bài chính. Tuy nhiên, tôi rất ấn tượng bởi giải pháp của bạn! Cảm ơn !
dùng4957842

0

Đây là một phương pháp tìm kiếm đơn giản. Chúng tôi bắt đầu từ một số giới hạn thấp hơn về số lượng bit và sau đó cố gắng tìm một mã hóa hợp pháp. Đặc biệt.

Gọi m là số bit hiện tại. Ký hiệu mã hóa i là bi1, bi2, ..., bim.

Các ràng buộc: bi xor bj không phải là 0 - nói cách khác, mỗi mã hóa của ký hiệu là duy nhất

Đối với tất cả j: sum_i bij <= p.

Đây là một vấn đề thỏa mãn giả-boolean (cũng có thể dễ dàng được mã hóa thành một vấn đề bão hòa tiêu chuẩn). Vì vậy, chỉ cần tiếp tục tăng m cho đến khi bạn tìm thấy một thỏa đáng (hoặc thực hiện tìm kiếm nhị phân bằng cách sử dụng giới hạn dưới và trên để tìm m tối thiểu).

Tất nhiên, điều này không đảm bảo rằng trong thực tế bạn sẽ có thể thực sự tìm thấy m tối thiểu, kiểm tra SAT có thể hết thời gian.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.