Giới hạn trên của sợi (n + 2)


8

Tôi có một vấn đề bài tập về nhà làm tôi bối rối vì toán học vượt quá những gì tôi đã làm, mặc dù chúng tôi đã nói rằng không cần thiết phải giải toán này. Chỉ cần cung cấp một giới hạn trên gần và biện minh cho nó.

Đặt Cung cấp một giới hạn trên không có triệu chứng trên là .

f(n)=|{w{a,b}n:aaw}|.
fn

Cho đến nay:

ndâyso với 2n122n-0232n-1352n-34số 82n-số 85132n-186212n-43

Toán học sẽ cho tôi một ràng buộc chính xác nằm ngoài tôi. Rõ ràng là một giới hạn trên, mặc dù nó không đặc biệt chặt chẽ.Ôi(2n)

Bất kỳ đề nghị về những gì tôi nên thử?


1
Chào mừng bạn đến với Khoa học máy tính! Tiêu đề bạn đã chọn không phù hợp để đại diện cho câu hỏi của bạn. Hãy dành chút thời gian để cải thiện nó; chúng tôi đã thu thập một số lời khuyên ở đây . Cảm ơn bạn!
Raphael

Nhiều người sẽ coi sợi (n + 1) là một biểu thức hoàn toàn tốt cho giới hạn trên. Thậm chí tốt hơn vì nó chính xác :-)
gnasher729

Câu trả lời:


8

Vì vậy, tôi không hoàn toàn chắc chắn, nhưng tôi nghĩ bạn đang yêu cầu đếm số chuỗi có kích thước (trên bảng chữ cái ) trong đó yếu tố / chuỗi con không xuất hiện phải không?{ một , b } một mộtn{a,b}aa

Trong trường hợp này, có một vài cách tiếp cận kết hợp mà bạn có thể thực hiện. Cả Yuval và ADG đều đưa ra những lập luận đơn giản và trực quan hơn, vì vậy tôi chắc chắn đề nghị kiểm tra câu trả lời của họ! Đây là một trong những mục yêu thích của tôi, nó hơi lạ, nhưng đó là một cách tiếp cận rất chung chung (và thú vị).

Hãy bắt đầu với một ngôn ngữ đơn giản hơn, đó là những từ bắt đầu và kết thúc bằng (cũng không có từ ghép của ). Chúng ta có thể xem một chuỗi được chấp nhận (ví dụ: ) như một danh sách các chuỗi của s được phân tách bằng số ít s. Điều này mang lại cho việc xây dựng: Bây giờ, làm thế nào để chúng ta đếm các câu thuộc về ngôn ngữ này?a a b b b a b a b b b b b a w = ( b + a ) b +baabbbababbbbba

w=(b+a)b+

Chúng ta hãy tưởng tượng rằng chúng ta đang mở rộng những biểu thức này ra. Làm những gì biểu thị? Chà, đơn giản là Bây giờ, điều này sẽ rất ít ý nghĩa, nhưng hãy tưởng tượng rằng là một biến số trên một số trường. Cụ thể, chúng tôi sẽ đối xử với , và . Điều này sau đó nói rằng Hãy thử xem động lực đằng sau cách giải thích kỳ lạ này. Đây gần như là một biến đổi sinh học. Đặc biệt, chúng tôi muốn duy trì số lượng của mỗie * = ε | e | e e | e e e | e e e e | ... e ε 1 một | b một + b một b c một × b × c đ *1 + e + e e + e e e + ... e n × be

e=ϵeeeeeeeeee
eϵ1aba+babca×b×c
e1+e+ee+eee+
entừ, mà bạn có thể dễ dàng nhìn thấy, chúng tôi làm. Tuy nhiên, có một sự khác biệt quan trọng giữa biểu thức chuỗi và biểu thức số: phép nhân (nối trong chuỗi, trong biểu thức số) hiện đang giao hoán! Theo trực giác, giao hoán cho phép chúng ta coi tất cả các hoán vị của cùng một từ là như nhau; đó là, chúng tôi không phân biệt giữa biểu thức và ; cả hai đều đại diện cho một chuỗi với 4 s và một . Do đó, chuyển đổi này cho phép chúng tôi để bảo tồn số lượng của mỗi từ của một số lượng nhất định của s và s, nhưng bây giờ nó cho phép chúng ta nhắm mắt làm ngơ về các chi tiết không cần thiết mà chúng ta không quan tâm.×b b a b b b a a bbbbabbbabbbaab

Nếu bạn quay lại prealculus, bạn có thể nhận ra chuỗi này là . Tôi biết rằng sẽ không có ý nghĩa gì khi viết lại biểu thức chính quy này như là một hàm có giá trị bằng số, nhưng chỉ đơn giản là với tôi trong giây lát.11e

Tương tự, . Điều đó có nghĩa là chúng ta có thể dịch thành ww1e+=eee1ew

w11(b1b×a)×b1b

Đổi lại, chúng ta có thể đơn giản hóa điều này xuống

w(a,b)=b×11(b+ba)

Điều này cho chúng ta biết rằng ngôn ngữ là đẳng cấu với ngôn ngữ (có bản dịch trực tiếp đã ) mà không cần phải sử dụng bất kỳ lý thuyết ngôn ngữ nào công cụ! Đây là một trong những sức mạnh của việc coi các chuỗi này là các hàm dạng đóng: chúng ta có thể thực hiện các đơn giản hóa trên chúng mà gần như không thể thực hiện được, do đó giảm nó xuống thành một vấn đề đơn giản hơn.b ( b | một b ) * bwb(bab)b1bba

Bây giờ, nếu bạn vẫn nhớ bất kỳ khóa học tính toán nào của mình, bạn sẽ nhớ lại rằng một số loại hàm nhất định (có đủ hành vi tốt) thừa nhận các biểu diễn chuỗi này được gọi là mở rộng Taylor. Đừng lo lắng, chúng tôi sẽ không thực sự phải lo lắng về những vấn đề rắc rối đó với Calc 1; Tôi chỉ đơn thuần chỉ ra rằng các hàm này có thể được biểu diễn dưới dạng tổng sao cho đưa ra số lượng từ thỏa mãn sao cho nó có chính xác lần xuất hiện của và lần xuất hiện của . Tuy nhiên, chúng tôi không đặc biệt quan tâm đến việc một cái gì đó là hay wijwiajbababz=a=bw(z)=w(z,z)=z

w(một,b)= =ΣTôi,jwTôijmộtTôibj
wTôijwTôimộtjbmộtb. Thay vào đó, chúng tôi chỉ quan tâm đến tổng số ký tự trong chuỗi. Để biến "mắt mù" giữa và , chúng ta chỉ có thể (theo nghĩa đen) đối xử với chúng như nhau, ví dụ: let và get mộtbz= =một= =b
w(z)=w(z,z)=z1zz2=kwkzk

trong đó đếm số lượng từ thỏa đáng có độ dài . kwkk

Bây giờ, tất cả những gì còn lại phải làm là tìm . Cách tiếp cận tổ hợp thông thường ở đây sẽ là phân rã hàm hữu tỷ này thành một phần của nó: nghĩa là, với mẫu số , chúng ta có thể viết lại (Có một chút đại số liên quan ở đây, nhưng đây là một tính chất phổ biến của các hàm hữu tỷ (một đa thức chia một hàm khác). Để giải quyết vấn đề này, bạn có thể cấu trúc lại tạo ra các ràng buộc . Bất kể và là gì, hãy nhớ lại rằng 1 - z - z 2 = ( z - φ ) ( z - ψ ) zwk1zz2=(zϕ)(zψ) Mộtz(zϕ)(zψ)=Azϕ+Bzψ Một+B=1,Aψ+Bφ=0MộtB1

Azϕ+Bzψ=z(zϕ)(zψ)
A+B=1,Aψ+Bϕ=0AB w ( z )11x=1+x+x2+ , tốt, chúng ta có thể sắp xếp lại do đó Ở đây, là tỷ lệ vàng và là liên hợp của nó. Sau đó, chúng tôi có một mô tả dễ dàng về hành vi tiệm cận của ngôn ngữ : nó chạy trong wk=(-Mộtφ)φ-k+(-Bψ)
w(z)=Aϕz+Bψz=(Aϕ)11zϕ+(Bψ)11zψ=(Aϕ)(1+ϕ1z+ϕ2z2+)+(Bψ)(1+ψ1z+ψ2z2+)
φ 1 +
wk=(Aϕ)ϕk+(Bψ)ψk
ϕ ψ=-φ-1wΘ(φn)wk=φ k -ψ k1+52ψ=ϕ1wΘ(ϕn). Trên thực tế, nếu bạn mở rộng mọi thứ ra, bạn sẽ thấy rằng Ngoài ra còn có một kết nối phức tạp với một lớp tổ hợp phổ biến khác. Đây chỉ là những con số Fibonacci!
wk=ϕkψk5=ϕk5

Bây giờ, giả sử bạn có , tính số chuỗi có kích thước bắt đầu và kết thúc bằng (và cũng không chứa chuỗi con ), làm thế nào chúng ta có thể xây dựng một chuỗi có thể bắt đầu hoặc kết thúc bằng ? Chà, thật đơn giản: một chuỗi được chấp nhận ở dạng (bắt đầu và kết thúc bằng ) hoặc là (bắt đầu bằng ) hoặc là (kết thúc bằng ) hoặc là (bắt đầu và kết thúc bằng ). Do đó: nhớ lại rằngwkkkaaawbawawaaawaa

f(n)=wn+wn2+2wn1
wnlà chuỗi , vì vậy , có nghĩa là Do đó,wn1+wn2=wn
f(n)=(wn+wn1)+(wn2+wn1)=wn+1+wn=wn+2
f(n)=fib(n+2)=ϕn+25

Bây giờ bạn có thể không phải thực hiện phân tích này, nhưng chỉ cần có cái nhìn sâu sắc rằng chuỗi này là chuỗi Fibonacci thay đổi phải cung cấp cho bạn ý tưởng về một số diễn giải kết hợp khác mà bạn có thể thử.


7

Câu trả lời của Lee Gao là tuyệt vời. Đây là một tài khoản khác nhau. Hãy xem xét các máy tự động sau đây:

Máy tự động cho ngôn ngữ

Đây là một máy tự động hữu hạn rõ ràng (UFA) không có chuyển đổi : một NFA sao cho mỗi từ có chính xác một đường dẫn chấp nhận. Do đó, số lượng từ có độ dài là số lượng đường dẫn có độ dài từ trạng thái bắt đầu đến trạng thái chấp nhận (vì không có chuyển tiếp ).ϵnnϵ

Chúng ta có thể đếm số lượng đường dẫn trong biểu đồ bằng đại số tuyến tính. Đặt là ma trận chuyển tiếp của automaton: là số mũi tên từ đến (mỗi mũi tên được liên kết với một ký hiệu duy nhất ). Khi đó chính xác là số đường dẫn có độ dài 2 từ đến . Tương tự, là số đường dẫn có độ dài từ đến . Trong trường hợp của chúng tôi, chúng tôi muốn đếm số lượng đường dẫn có độ dài từMM(qi,qj)qjqi

M2(qi,qj)=kM(qi,qk)M(qk,qj),
qjqiMn(qi,qj)nqjqinq0 đến và vì vậy Cách tiêu chuẩn để tính toán một biểu thức như vậy là bằng cách chéo (hoặc, nói chung hơn, bằng cách tính dạng của Jordan ). Các giá trị riêng của dễ dàng được tính là , và đối với một số ma trận , {q0,q1}
f(n)=(11)(1110)n(10).
MMM1±52P
f(n)=(11)P((1+52)n00(152)n)P1(10)=A(1+52)n+B(152)n,
đối với một số hệ số . Để xác định chúng ta có thể chẩn đoán một cách rõ ràng hoặc chỉ cần thiết lập một hệ thống tuyến tính bằng các giá trị đã biết của . Vì và , nên cách tiếp cận sau cho thấy A,BA,BMff(0)=1f(1)=2
A+B=11+52A+152B=2
Giải hệ thống này (ví dụ: sử dụng loại bỏ Gaussian), chúng tôi phát hiện ra rằng và . Do đó Cách tiếp cận tương tự hoạt động với mọi ngôn ngữ thông thường.A=5+3510B=53510
f(n)=5+3510(1+52)n+53510(152)n=Θ(λmaxn), where λmax=1+52.

Đây là một cách tiếp cận thú vị! Tôi luôn thích xem giảm đại số tuyến tính cho các vấn đề liên quan đến đường dẫn :)
Lee

4

@Lee Gao là quá phức tạp (tôi thậm chí không đọc toàn bộ), đây là một cách tiếp cận đơn giản:

Đặt f (n) là tất cả các chuỗi mong muốn trong đó cho a (n) là các chuỗi kết thúc tại a và b (n) là các chuỗi kết thúc tại b.

Bây giờ với mỗi chuỗi kết thúc tại b, chúng ta có thể trực tiếp thêm a để có ba kết thúc và một chuỗi hợp lệ: Lưu ý rằng chúng ta không thể thêm một chuỗi vào cuối chuỗi kết thúc vào lúc khác chúng ta sẽ có aa ở cuối

(1)một(n)= =b(n-1)

Chúng ta có thể thêm b vào bất kỳ chuỗi nào:

(2)b(n)= =một(n-1)+b(n-1)

Bây giờ in và thay thế trong : Vì vậy b (n) là sợi (n) và vì a ( n) là b (n-1) do đó a (n) là sợi (n-1). Bây giờ f (n) là: Vì sợi (n) là , do đó f (n) là , . (Lấy là hằng số và bỏ qua cho lớn để có được tiệm cận)nn-1(1)(2)

b(n)= =b(n-2)+b(n-1)
f(n)= =một(n)+b(n)= =fTôib(n)+fTôib(n-1)= =fTôib(n+1)
(φn-φ-n)/5Ôi(φn)φ= =1+521.618φ/5φ-nn

Lưu ý: sợi (0) = 0, sợi (1) = 1.


Tuy nhiên, giới hạn trên của bạn không tốt lắm, tuy nhiên: mọi ngôn ngữ trên có nhiều nhất từ có độ dài ! {một,b}2nn
Yuval Filmus

@YuvalFilmus vấn đề là gì, bạn muốn có một ràng buộc gần hơn thì hãy sử dụngfib(n)=(ϕnϕn)/5
RE60K

Điều đó thật tuyệt! Các cấu trúc quy nạp bước khóa của cặp và là điều tôi cũng nghĩ đến. mộtb
Lee
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.