Có gì sai với chứng minh bổ đề bơm của tôi?


8

Ngôn ngữ rõ ràng là thông thường - ví dụ: nó phù hợp với biểu thức chính quy . Nhưng đối số bổ đề bơm sau đây dường như cho thấy nó không thường xuyên. Có chuyện gì vậy?L={02n | n0}(00)

Tôi đã tìm thấy một cách để tách một đầu vào s như xyz thỏa mãn các yêu cầu của Bổ đề bơm nhưng đó là không đúng sự thật rằng xyTôizL cho tất cả  Tôi . Điều đó không có nghĩa là ngôn ngữ không thường xuyên?

Cụ thể hơn, bổ đề bơm cho các ngôn ngữ thường xuyên nói rằng, nếu một ngôn ngữ  L là thường xuyên, tồn tại bơm chiều dài p1 đến nỗi bất kỳ chuỗi SL với |S|>p có thể được viết như S= =xyz như vậy cái đó:

  1. |y|1
  2. |xy|p
  3. xyTôizL cho tất cả Tôi0 .

Vì vậy, hãy lấy S= =02p và viết nó dưới dạng S= =ε002p-1 (nghĩa là x= =ε , y= =0 , z= =02p-1 ). Điều này thỏa mãn 1. và 2. Nhưng, lấy Tôi= =0 , chúng tôi nhận được xyTôiz= =ε0002p-1= =02p-1 , không có trong  L vì chiều dài của nó là số lẻ. Vì vậy, có vẻ như ngôn ngữ không thường xuyên.


Đây là một câu hỏi tham khảo minh họa một lỗi phổ biến trong việc sử dụng bổ đề bơm cho các langau thông thường. Cảm ơn Ariel đã phát hiện ra vấn đề trong phiên bản gốc của câu hỏi.


4
Bổ đề bơm nói rằng đối với các từ lớn hơn độ dài tồn tại sự phân hủy như vậy. Bạn đã chỉ ra một phân tách cụ thể không hoạt động, nhưng lấy bất kỳ từ nào có độ dài lớn hơn 2 và . (Chúa thương xót tâm hồn tôi vì đã đáp lại)py=02
Ariel

Có những hướng dẫn khá tốt trong các bài viết trước, ví dụ: cs.stackexchange.com/questions/1031/iêu
Ran G.

2
@RanG. Bài đăng đó là một hướng dẫn tuyệt vời về cách chứng minh rằng một ngôn ngữ không thường xuyên nhưng dường như chúng tôi nhận được một số câu hỏi thường gặp khi ai đó đã cố gắng áp dụng bổ đề bơm và mắc lỗi chính xác. Tôi nghĩ sẽ hữu ích hơn khi chỉ ra lỗi sai trong một bằng chứng như vậy (ví dụ: bằng cách đánh dấu là một bản sao của câu hỏi này) hơn là nói, "Đây là cách thực hiện đúng; bạn tìm ra sự khác biệt giữa cách tiếp cận và cách chính xác là. "
David Richerby

2
@DavidR Richby bạn nói đúng, câu hỏi này không phải là về việc thể hiện sự không đều đặn bằng cách sử dụng bơm. Việc sử dụng sai lầm phổ biến nhất của bổ đề là hiểu sai các bộ lượng hóa và hướng dẫn tại câu hỏi tôi đã đề cập cố gắng giải quyết vấn đề đó (ví dụ: bằng cách viết bằng chữ in đậm: tất cả các cách để phân vùng nó, v.v.)
Ran G.

Bổ đề đảm bảo có một số phân tách hoạt động nếu ngôn ngữ là thường xuyên. Để chứng minh nó không thường xuyên, bạn phải chứng minh rằng không có hoạt động chia tách nào .
vonbrand

Câu trả lời:


6

Vấn đề là ở các bộ định lượng. Bổ đề bơm nói rằng bất kỳ chuỗi có đều có thể được viết là sao cho ba thuộc tính giữ. Nó không nói rằng mọi cách viết nó dưới dạng làm cho hai thuộc tính đầu tiên giữ cũng làm cho thứ ba giữ.S|S|p xyzxyz

Đối với ngôn ngữ , chúng tôi tiến hành như sau. Đầu tiên, lưu ý rằng chúng ta phải có , vì nếu , chúng ta buộc phải lấy , , và bạn đã thể hiện trong câu hỏi rằng cái này không hoạt động. Vì vậy, với , chúng ta có thể viết là ( , , ). Chúng tôi có , và cho tất cả{02n|n0}p2p= =1x= =εy= =0z= =02p-1p2S= =02pS= =ε0002(p-1)x=ϵy=00z=02(p1)|ϵ00|p|00|>1(00)i02(p1)Li0. Do đó, tồn tại một số cách phân tách chuỗi dưới dạng thỏa mãn tất cả các thuộc tính, mặc dù phân tách đầu tiên bạn nghĩ là không hoạt động.xyz

Để chỉ ra rằng một ngôn ngữ không thường xuyên, bạn cần chỉ ra rằng mọi phân tách thành thỏa mãn hai thuộc tính đầu tiên không thỏa mãn ngôn ngữ thứ ba. Nó không đủ để chỉ ra rằng một phân tách không hoạt động.xyz

Để hiểu lý do tại sao bổ đề bơm là như vậy, nó giúp suy nghĩ về bằng chứng. Nếu một ngôn ngữ là thường xuyên, nó được chấp nhận bởi một số DFA. DFA đó có một số trạng thái: gọi nó là . Theo nguyên tắc pigeonhole, bất cứ khi nào DFA đọc một chuỗi dài hơn , nó phải truy cập một số trạng thái hai lần: nói trạng thái  . Bây giờ,  là một phần của đầu vào đọc tối đa (và bao gồm) lần truy cập đầu tiên vào  ,  là phần được đọc sau lần truy cập đầu tiên và tối đa và bao gồm cả lần thứ hai (phải có ít nhất một ký tự) và  là phần còn lại . Nhưng bây giờ bạn có thể thấy rằng phải được chấp nhận: đưa bạn từ trạng thái bắt đầu sang ppqxqyzxzxq và đưa bạn từ đến trạng thái chấp nhận. Tương tự như vậy, phải được chấp nhận cho bất kỳ dương nào  , vì mỗi lần lặp lại của  sẽ đưa bạn từ trở về  . Lưu ý rằng sự phân rã của đầu vào thành , và  hoàn toàn được xác định bởi automaton, lần lượt, được xác định (nhưng không phải là duy nhất) bởi ngôn ngữ. Vì vậy, bạn không được chọn phân tách: nếu ngôn ngữ là thường xuyên, một số phân tách tồn tại; để chỉ ra rằng một ngôn ngữ không thường xuyên, bạn phải chỉ ra rằng mọi phân tách đều thất bại.zqxyiziyqqxyz


Đây là một lời giải thích tốt nhưng tôi đang bị lạc sau khi đọc cs.stackexchange.com/a/1051/10511 . Hãy xem mục 4. Anh ấy đang cân nhắc tất cả các cách để tách chuỗi thành 3 chuỗi con. Cách tôi đọc là tôi có thể bơm nó theo mọi cách tôi chia chuỗi giả sử tôi được cung cấp một ngôn ngữ thông thường. Vậy lỗi ở đâu? Điều này thực sự làm tôi bực mình vì tôi không hiểu nó. Đến mức tôi không thể ngủ bình thường vào ban đêm.
chớp nhoáng

1
@flashburn Nếu nó được coi là không thường xuyên, không chia tách có thể hoạt động. Ở đây chúng tôi tìm thấy một cái hoạt động, vì vậy chúng tôi không thể hiển thị nó không thường xuyên bằng cách sử dụng bổ đề này.
Raphael

@flashburn Tôi đã thêm một lời giải thích về lý do tại sao bổ đề bơm là đúng, điều này có thể giúp bạn hiểu, bằng cách hiển thị các yêu cầu của bổ đề đến từ đâu.
David Richerby

1
@flashburn Ngoài ra, nếu các nghiên cứu của bạn làm bạn căng thẳng đến mức bạn không thể ngủ đúng cách, bạn nên trò chuyện với dịch vụ tư vấn của trường đại học. Loại bổ đề bơm của quan trọng nhưng sức khỏe của bạn và phúc lợi là nhiều quan trọng hơn.
David Richerby

2
Chưa kể rằng giấc ngủ, dinh dưỡng và tập thể dục phù hợp sẽ khiến tâm trí của bạn hoạt động tốt hơn nhiều, @flashburn. Xem thêm tại đây .
Raphael
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.