Là ngôn ngữ của các cặp từ có độ dài bằng nhau có khoảng cách hãm là 2 hoặc lớn hơn không có ngữ cảnh?


26

Là bối cảnh ngôn ngữ sau đây miễn phí?

L={uxvyu,v,x,y{0,1}+,|u|=|v|,uv,|x|=|y|,xy}

Như được chỉ ra bởi sdcvvc, một từ trong ngôn ngữ này cũng có thể được mô tả là sự ghép của hai từ có cùng độ dài khoảng cách hãm từ 2 trở lên.

Tôi nghĩ rằng nó không phải là bối cảnh miễn phí nhưng tôi đang gặp khó khăn để chứng minh nó. Tôi đã thử giao ngôn ngữ này với một ngôn ngữ thông thường (ví dụ như ) sau đó sử dụng bổ đề bơm và \ hoặc đồng cấu nhưng tôi luôn nhận được một ngôn ngữ quá phức tạp để mô tả và viết xuống. 0101


Bạn đã thử bơm chuỗi chưa? 0u1x1u0x
Pål GD

Có, nhưng tôi đã thất bại trong việc đưa chuỗi này ra khỏi ngôn ngữ (điều đó không có nghĩa là không thể, chỉ là tôi đã không làm như vậy).
Robert777

1
@ PålGD, có lẽ bạn cần một cách để "đánh dấu" các mảnh, như1u01x01u01x0
vonbrand

8
Ngôn ngữ này có thể được viết là trong đó là khoảng cách Hamming. Lưu ý rằng nếu chúng ta thay thế 2 bằng 1, thì đó là ngữ cảnh ( cs.stackexchange.com/questions/307 ) nhưng thủ thuật được sử dụng ở đó sẽ không hoạt động. Cá nhân tôi đang cá cược nó không phải là bối cảnh. {uv:|u|=|v|,d(u,v)2}d
sdcvvc

1
@sdcvvc: Bạn nói đúng, một phân vùng thành sao cho một trong các bit khác nhau nằm trong và cái kia ở . Tôi đứng sửa. uuxux
András Salamon

Câu trả lời:


7

Lưu ý [2019-07-30] Bằng chứng là sai ... câu hỏi phức tạp hơn âm thanh.

Sau một nỗ lực thất bại ở đây, đó là một ý tưởng khác.

Nếu chúng ta giao cắt với ngôn ngữ thông thường chúng ta sẽ có ngôn ngữ CF.LLreg=0101010

Có lẽ chúng ta có thể gặp nhiều may mắn hơn nếu chúng ta sử dụng (một chuỗi có chính xác 4 1s).Lreg=010101010

Đặt , không chính thức nếu nó có thể được chia thành hai nửa, sao cho một nửa chứa chính xác hoặc cả hai nửa chứa hai s nhưng vị trí của họ không phù hợp.L1=LLregwL1{0,1,3,4} 1s1

Giả sử là CF và để là ngữ pháp của nó ở dạng bình thường Chomsky và đểL1G

w=uv=0a10b10c10d10eL1

Chúng ta có(chẵn chiều dài) và|u|=|v|d(u,v)2

Nếu chúng ta hạn chế sự chú ý của mình theo cách có thể tạo ra bốn số 1 của chúng ta có ba trường hợp được hiển thị ở trên cùng của hình 1. Phần trung tâm của hình 1 cho thấy trường hợp đầu tiên (nhưng các trường hợp khác tương tự) .w

nhập mô tả hình ảnh ở đây
Hình 1 (hình ảnh đầy đủ có thể được tải xuống ở đây )

Nếu chúng ta chọn và chúng ta thấy rằng các số 0 giữa hai cặp 1 phải được bơm độc lập (các nút màu đỏ trong hình): đặc biệt, cho đủ lớn , chúng ta nhận được một nút nonterminal trùng lặp trên một cây con bên trong (nút X trong hình 2) hoặc một chuỗi lặp lại trong đường dẫn tới nút thứ nhất hoặc thứ hai (nút Y trong hình 2). Lưu ý rằng Hình 2 là một chút đơn giản: có thể có các nút không thuộc đầu cuối hơn giữa hai s, và cũng có thể giữa hai ( nhưng với mà chỉ sản xuất 0s ở bên phải của 1 đầu tiên.a=e,c=2ab,dabaXYsY...Zi...YZi

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

Vì vậy, chúng ta có thể sửa một tùy ý , sau đó chọn đủ lớn để có được một nút có thể bơm độc lập trên chuỗi các số 0 giữa thứ nhất và thứ hai . Đối với chuỗi các số 0 giữa thứ ba và thứ tư 1, chúng ta có thể chọn . Nhưng là có thể bơm độc lập nên có một chuỗi con bơm , tức là và . Chuỗi chúng tôi nhận được là:a=e=k,c=2ab1d=b!+b0 b p b y b = x y z , | y | = p , | x | 0 , | z | 0 x y i z = b ! + b
0bpbyb=xyz,|y|=p,|x|0,|z|0xyiz=b!+b

w=0k10b!+b102k10b!+b10k

nhưng . Do đó không phải là CF và cuối cùng không phải là CF.wL1L1L

Nếu bằng chứng là đúng (???), nó có thể được mở rộng cho mọi ngôn ngữLk={uv:|u|=|v|,d(u,v)k},k2


Tôi sợ tiền thưởng sẽ hết hạn trước khi chúng tôi thực sự có thể xác minh bằng chứng này, vì vậy trừ khi có bất kỳ thông tin quyết liệt nào phát sinh trong 4 giờ tới, điều này nhận được điểm là nỗ lực tốt nhất cho đến nay.
jmite

@jmite: đừng lo lắng có nhiều khả năng đó là một nỗ lực sai như lần trước (kéo dài khoảng 30 phút trước khi phát hiện ra một lỗi nhỏ) :-) :-)
Vor

Tại sao trường hợp phân biệt? Các nhánh trong ngữ pháp không có mối quan hệ với một nửa của từ. Nhưng tôi nghĩ nó không thành vấn đề; nếu bằng chứng hoạt động, phân biệt trường hợp này là không cần thiết. Nhìn vào một ngữ pháp giả định và sử dụng bằng chứng của bổ đề Pumping thay vì bổ đề là một mẹo hay (người ta nên làm điều này thường xuyên hơn). Tôi có một mối quan tâm (thực sự): nếu bạn bơm một chuỗi con , bạn sẽ nhận được ; Tôi không thấy cách bạn đến. Đừng nghĩ rằng sẽ làm hại bằng chứng, nhưng kiểm tra tốt hơn. Ngoài ra, bạn có thể muốn làm rõ một số ký hiệu (và lỗi chính tả). 0 b + p ( i - 1 ) b + b !0b0b+p(i1)b+b!
Raphael

1
@Raphael: cảm ơn các ý kiến. Có lẽ tôi đã sai, nhưng nếu bạn chọn làm độ dài mục tiêusau đó với mỗi chiều dài bơm , chuỗi có thể được phân tách trong và có thể được bơm vào, thực sự trong ví dụ của bạn p chắc chắn chia, do đó, có một mà, nhưng độ dài chuỗi ban đầu là , vì vậy tổng chiều dài được bơm là. Tôi nhớ nó từ một vài bài tập sử dụng bổ đề của Ogden ... bây giờ tôi sẽ kiểm tra lại chúng. p 0 b 0 x y z , ( | x y z | = b , | y | = p b ) x y i z = b + b ! b ! ( i - 1 ) p ( i - 1 ) = b ! b | x y ( tôi -b+b!p0b0xyz,(|xyz|=b,|y|=pb)xyiz=b+b!b!(i1)p(i1)=b!b|xy(i1)z|=b+b!
Vor

@Raphael: ... Tôi không tìm thấy bằng chứng ở bất cứ đâu mà chỉ có một bài báo của Zach Tomaszewski chứng minh rằng phần bổ sung của là CF (xem câu hỏi ), vì vậy có lẽ đó là một bài mới kết quả (mặc dù đơn giản); và một định lý kiểu bơm bổ đề có thể được bắt nguồn từ các ngôn ngữ có các chuỗi chứa một số hữu hạn của một ký hiệu cụ thể và các chuỗi con có độ dài tùy ý giữa chúng. Ldup={ww}
Vor

2

Sau 2 lần thất bại, điều đó đã bị @Hendrik Jan (cảm ơn) từ chối, đây là một lần khác, điều đó không thành công hơn. @Vor đã tìm thấy một ví dụ về ngôn ngữ CF xác định trong đó việc xây dựng tương tự sẽ được áp dụng, nếu đúng. Điều này cho phép xác định một lỗi trong việc neo của chuỗi trong ứng dụng bổ đề. Bổ đề dường như không có lỗi. Đây rõ ràng là quá đơn giản một công trình. Xem thêm chi tiết trong các ý kiến.y


Ngôn ngữ không có ngữ cảnh.L={uxvyu,v,x,y{0,1}{ϵ} , u∣=∣v , uv , x∣=∣y , xy }

Sẽ rất hữu ích khi ghi nhớ đặc tính trong đó d là khoảng cách Hamming, được đề xuất bởi @sdcvvc. Điều người ta cần nghĩ đến là 2 vị trí được chọn trong mỗi nửa chuỗi sao cho các ký hiệu tương ứng khác nhau.L={uv:|u|=|v|,d(u,v)2}

Sau đó, bạn xem xét một chuỗi sao cho và là chẵn. Rõ ràng là trong ngôn ngữ L, bằng cách cắt và bất cứ đâu giữa hai 1. Chúng tôi muốn bơm chuỗi đó vào phần đầu tiên giữa 1, để nó sẽ trở thành mà không phải là ngôn ngữ.10i10ji<ji+jux10j10j

Trước tiên, chúng tôi thử sử dụng bổ đề của Ogden , giống như bổ đề bơm, nhưng áp dụng cho hoặc các ký hiệu phân biệt được đánh dấu trên chuỗi, là chiều dài bơm cho các ký hiệu được đánh dấu (nhưng bổ đề có thể bơm nhiều hơn vì nó cũng có thể bơm được ký hiệu không được đánh dấu). Việc bơm chiều dài được đánh dấu chỉ phụ thuộc vào ngôn ngữ. Nỗ lực này sẽ thất bại, nhưng thất bại sẽ là một gợi ý.ppp

Sau đó, chúng tôi có thể chọn và chúng tôi đánh dấu các ký hiệu trên chuỗi đầu tiên của 0. Chúng tôi biết rằng không ai trong số 2 người sẽ ở trong máy bơm, bởi vì nó có thể bơm ra một lần (số mũ 0) thay vì bơm vào. Và việc bơm ra 1 sẽ khiến chúng tôi không nói được ngôn ngữ.i=pi

Tuy nhiên, chúng ta có thể bơm ở cả hai phía của giây thứ hai nhanh hơn hoặc thậm chí nhanh hơn ở phía bên phải, để số 1 không bao giờ đi qua giữa chuỗi. Ngoài ra bổ đề của Ogden không khắc phục giới hạn trên đối với kích thước của những gì đang được bơm, do đó không thể tổ chức bơm để có được chính xác 1 chính xác ở giữa chuỗi.

Chúng tôi sử dụng một phiên bản sửa đổi của bổ đề, ở đây được gọi là Bổ đề của Nash, có thể xử lý những khó khăn này.

Trước tiên chúng ta cần một định nghĩa (nó có thể có một tên khác trong tài liệu, nhưng tôi không biết cái nào - sự giúp đỡ được chào đón). Một chuỗi được cho là xóa một chuỗi iff nó được lấy từ bằng cách xóa các ký hiệu trong . Chúng tôi sẽ lưu ý .uvvvuv

Bổ đề Nash: Nếu là một ngôn ngữ bối cảnh tự do, sau đó có tồn tại hai số và như vậy mà cho bất kỳ chuỗi có độ dài ít nhất trong , và mỗi cách “đánh dấu” hoặc nhiều các vị trí trong , có thể được viết là với chuỗi , , , , , sao choLp>0q>0wpLpwww=uxyzvuxyzv

  1. xz có ít nhất một vị trí được đánh dấu,
  2. xyz có nhiều nhất các vị trí được đánh dấu vàp
  3. có 3 chuỗi , , sao cho x^y^z^
    1. x^x , , ,y^yz^z
    2. 1≤∣x^z^∣≤q , và1≤∣y^∣≤q
    3. uxjx^iy^z^izjv nằm trong với mọi và với mọi .Li0j0

Bằng chứng : Tương tự như bằng chứng về bổ đề của Ogden, nhưng các cây con tương ứng với các chuỗi và được cắt tỉa sao cho chúng không chứa bất kỳ đường dẫn nào có hai lần không cùng đầu cuối (ngoại trừ gốc của hai cây con này). Điều này nhất thiết giới hạn kích thước của các chuỗi được tạo và theo hằng số . Các chuỗi và , cho , tương ứng với một phiên bản chưa được chỉnh sửa của cây, được sử dụng chủ yếu với để đơn giản hóa kế toán khi áp dụng bổ đề.yxzx^z^y^qxjzjj0j=1

Chúng tôi sửa đổi nỗ lực bằng chứng ở trên bằng cách đánh dấu các ký hiệu cùng 0, nhưng chúng được theo sau bởi các ký hiệu 0 để đảm bảo rằng chúng tôi bơm vào phần bên trái của chuỗi, giữa hai 1 giây. Điều đó làm cho tổng số 0 nằm giữa 1 (thực tế là đủ, vì 1 bên phải nhất không thể nằm trong , điều này sẽ cho phép loại bỏ nó một cách đơn giản).p2qi=p+2qi=p+qz^

Những gì còn lại là đã chọn để chúng ta có thể bơm chính xác số 0 bên phải để hai chuỗi bằng nhau. Nhưng cho đến nay, hạn chế duy nhất đối với là lớn hơn . Và chúng ta cũng biết rằng số 0 được bơm trong mỗi lần bơm là từ 1 đến q. Vậy hãy để là tích của các số nguyên đầu tiên . Chúng tôi chọn .jjihqj=i+h

Do đó, vì mức tăng bơm - bất kể là gì - nằm trong , nên nó chia . Gọi là thương. Nếu chúng ta bơm chính xác lần, chúng ta sẽ nhận được chuỗi không có trong ngôn ngữ. Do đó L không có ngữ cảnh.d[1,q]hkk10j10j

.

Tôi nghĩ rằng tôi sẽ không bao giờ thấy
Một chuỗi đáng yêu như một cái cây.
Vì nếu nó không có phân tích cú pháp,
Chuỗi không bị hư hỏng nhưng là một trò hề


Tuy nhiên, lưu ý rằng vượt qua nửa thứ hai đọc ngăn xếp ngược lại. Điều đó dường như có nghĩa là hai vị trí ở cùng một vị trí trong cả hai nửa, nhưng ngược lại?
Hendrik ngày

bạn nói đúng ... tôi ngốc nghếch ... bây giờ tôi biết điều gì đang cằn nhằn tôi sau gáy.
babou

Tôi nhận ra đối số (vì tôi không thể làm cho nó hoạt động khi tôi tự thử).
Hendrik ngày

Tôi có nên để lại câu trả lời sai này? Nó có ích gì đó, tôi nghĩ, vì nó làm cho vấn đề trở nên đáng ngờ tương tự như . Vấn đề là các quy tắc của trang web không nhằm mục đích khuyến khích kết quả sai cho thảo luận (ý tôi là tôi không thích downvote hơn bất kỳ ai khác). aibjckaibjck
babou

@HendrikJan Tôi có bị lừa lần nữa không? (BTW, cảm ơn vì đã biến nó thành một cuộc thảo luận)
babou

-1

bởi câu hỏi này, tôi nghĩ có ngữ cảnh và được tạo bởi ngữ pháp sau LSAXBYBYAXA00A00A11A01A1B10B00B11B01B1X00X00X11X01X1Y10Y00Y11Y01Y1


4
Điều này là không chính xác; bạn không thể bảo vệ độ dài của AX giống như BY. Ví dụ: ngữ pháp của bạn tạo S -> AXBY -> A011 -> 0A1011 -> 001011 không có trong ngôn ngữ gốc. Ngoài ra, các ký hiệu A và X của bạn tạo cùng một ngôn ngữ, giống với B và Y; chúng có thể được hợp nhất.
sdcvvc
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.