Apa rumus untuk jumlah string tanpa pengulangan?

8

Saya ingin menghitung jumlah string s lebih dari alfabet yang terbatas A, yang tidak mengandung pengulangan, dan maksud saya untuk setiap substring t dari s, 1<|t|<|s|, tidak ada salinan terpisah dari t di s. Sebagai contoh, biarkanA={a,b}. Kemudianaaa adalah salah satu string yang ingin saya hitung, karena untuk substringaa, tidak ada salinan terpisah. Namun,abab mengandung pengulangan seperti itu.

Jika seseorang sudah menemukan formula yang berguna, silakan tautkan. Kalau tidak, saya akan merujuk kembali ke posting ini di artikel apa pun yang saya tulis, jika saya menggunakan jawaban seseorang.

Ini adalah contoh lain. Mari kita coba untuk membangun string panjang{a,b}, yang tidak mengandung pengulangan:

aaa (tidak bisa a)
   aaab (a atau b)
     aaabbb (tidak bisa b)
       aaabbba (tidak bisa b atau a)
   aaaba (tidak bisa a atau b)

Jika kita membangun pohon, kita bisa menghitung jumlah node, tetapi saya ingin rumus.

Sunting: Yah, itu tidak menakutkan seperti yang saya pikir pertama kali jika kita mengonversi ini menjadi masalah pemilihan tempat sampah. Satu set string dengan panjang k dengan setidaknya satu pengulangan sama dengan set yang merupakan gabungan dari semua permutasi dari produk kartesius: A×A××A(k-4 times)×R×R dimana Radalah pengulangan yang diperlukan. Saya tidak tahu apakah itu membantu, tapi itu terdengar pro :) Pokoknya, biarkan mereka | | | nampan, pilih dua (bahkan yang sama) untuk menjadi pengulangan, lalu pilihk4semakin banyak dan gandakan (4 yang pertama sudah dipilih, lihat?). Sekarang saya hanya perlu menemukan formula itu dari matematika diskrit.

Dan Donnelly
sumber
1
mengapa tidak ada salinan disjoint di aaa? bukant=a substring yang valid dari s=aa, itu adalah, s=tt? Bisakah Anda memberikan beberapa contoh lagi kepada pasangan untuk menjelaskan apa yang seharusnya dan tidak seharusnya diperhitungkan?
Ran G.
1
Memperhatikan 1<|t|kebutuhan. Beri tahu saya jika saya bisa menulis posting saya dengan lebih jelas.
Dan Donnelly
ya, saya melewatkan persyaratan ini. Lebih masuk akal sekarang.
Ran G.
1
Saya tidak melihat bagaimana (dengan alfabet 2 huruf misalnya) Anda dapat membuat string panjang (katakanlah) 10 tanpa pengulangan. yaitu angka yang diinginkan harus dibatasi oleh beberapa fungsi k independen dari n
Suresh
2
Saya hanya bisa mengatakan untuk alfabet ukuran nstring terpanjang yang mungkin tanpa pengulangan, adalah adalah karena Anda dapat memiliki string dengan panjang dengan elemen yang sama, dan adalah karena Anda hanya memiliki kombinasi yang berbeda dari elemen ini, dan menambahkan penyebab kombinasi baru untuk diulang. (Saya menganggap bahwa Anda mengatakan tentang pengulangan disjoint).
2(n2)+3n
3n32(n2)2(n2)

Jawaban:

1

Ini menjawab pertanyaan setelah jumlah kata bebas berulang per ukuran, menyiratkan bahwa jumlah yang diinginkan bahkan ada.

Definisi: Panggil ulangi gratis jika dan hanya jika tidak mengandung faktor dengan dan .wΣ xyxxΣ2yΣ

Klaim: Untuk alfabet terbatas dengan , tidak ada kata bebas-ulang yang panjangnya lebih dari .Σ|Σ|=k2k2+1

Ide Bukti: Dengan prinsip lubang-merpati. Ambil kata dengan panjang (atau kata yang lebih panjang dan pertimbangkan awalan panjang ini), yaitu . Anggap bebas-pengulangan; itu berarti untuk semua (jika tidak, kami harus mengulangi). Oleh karena itu, ada banyak pasangan simbol; ini bertentangan . Jadi tidak bebas dari pengulangan. w2k2+2w=Sebuah0Sebuah0...Sebuahk2Sebuahk2wSebuahsayaSebuahsayaSebuahjSebuahjsayajk2+1|Σ2|=k2w

Perhatikan bahwa ini adalah bukti kasar: faktor mungkin membuat pengulangan lebih cepat.SebuahsayaSebuahsaya+1


Notasi:

  • Σk=saya=kΣsaya=Σsaya=0k-1Σsaya
  • "factor" = "subword" = "substring"
Raphael
sumber
Ini tidak benar-benar menjawab pertanyaan. Anda hanya membuktikan batas atas yang sangat kasar dan cukup jelas, pertanyaannya menanyakan formula yang tepat.
Gilles 'SO- berhenti menjadi jahat'
@Gilles: Saya salah membaca pertanyaan pada awalnya tetapi saya pikir saya bisa meninggalkan apa yang saya tulis di sini untuk orang lain (misalnya Kaveh, yang mengklaim ada banyak kata seperti itu).
Raphael
Komentar saya lebih ketat dari jawaban Anda.