🔤 Düzenli İfadelerin Tanımı

Düzenli ifade (regular expression), dil tanımlayıcı ifadedir. Düzenli ifadeler ile tanımlanan diller düzenli diller (regular languages) olarak adlandırılmaktadır.

Temel Kavramlar

  • ε (epsilon): Boş kelime
  • ∅ (phi): Boş dil
  • a ∈ Σ: Tek sembol (alfabe elemanı)

⚡ Düzenli İfadelerin Operatörleri

1. Birleştirme (Concatenation)

İki düzenli ifadeyi ardışık olarak birleştirir.

Notasyon: xy veya x·y

Örnek: Σ = {a,b} için ab = {"ab"}

2. Birleşim (Union)

İki düzenli ifadeden en az birini sağlayan kelimeler.

Notasyon: x|y veya x+y

Örnek: a|b = {"a", "b"}

3. Yıldız (Kleene Star)

Bir sembolün sıfır veya daha fazla kez tekrarlanması.

Notasyon: x*

Örnek: a* = {ε, a, aa, aaa, ...}

4. Artı (Kleene Plus)

Bir sembolün bir veya daha fazla kez tekrarlanması.

Notasyon: x+

Örnek: a+ = {a, aa, aaa, ...}

5. Parantez

Operatör önceliğini belirlemek için kullanılır.

Notasyon: (x)

Örnek: (ab)* = {ε, ab, abab, ababab, ...}

📝 Düzenli İfade Kuralları

Eğer r ve s düzenli ifadeler ise:

  • (r)(s) = rs → düzenli ifadedir
  • (r)|(s) = r+s → düzenli ifadedir
  • (r)* → düzenli ifadedir

🔍 Düzenli İfade Örnekleri

Örnek 1: Basit Tekrarlar

Σ = {x} olmak üzere:

L = {ε, x, xx, xxx, xxxx, .....}

Düzenli ifade: x*

Açıklama: x sembolünün 0 veya daha fazla tekrarı

Örnek 2: Sabit Desen

Σ = {a,b} olmak üzere:

L = {a, ab, abb, abbb, abbbb, .....}

Düzenli ifade: ab*

Açıklama: a ile başlayan, sonrasında 0 veya daha fazla b

Örnek 3: Alternatif Desenler

Σ = {a,b} olmak üzere:

L = {ε, ab, abab, ababab, ......}

Düzenli ifade: (ab)*

Açıklama: ab deseninin 0 veya daha fazla tekrarı

Örnek 4: Karmaşık Desen

Σ = {a,b} olmak üzere:

L = {a, b, aa, ab, ba, bb, aaa, ...}

Düzenli ifade: (a|b)*

Açıklama: a veya b'nin herhangi bir kombinasyonu

Örnek 5: Sayısal Desenler

Σ = {0,1} olmak üzere:

L = 01 ile biten tüm ikili dizgiler

Düzenli ifade: (0|1)*01

Açıklama: Herhangi dizgi + 01

🔧 Düzenli İfadelerin Özellikleri

Kapalılık Özellikleri

Düzenli diller aşağıdaki işlemler altında kapalıdır:

  • Birleşim: Eğer L₁ ve L₂ düzenli ise, L₁ ∪ L₂ düzenli
  • Birleştirme: Eğer L₁ ve L₂ düzenli ise, L₁L₂ düzenli
  • Yıldız: Eğer L düzenli ise, L* düzenli
  • Kesişim: Düzenli diller kesişim altında kapalı DEĞİL
  • Tümleme: Düzenli diller tümleme altında kapalı DEĞİL

Karar Özellikleri

  • Boşluk Problemi: L = ∅ mı? → Karar verilebilir
  • Üyelik Problemi: w ∈ L mi? → Karar verilebilir
  • Eşitlik Problemi: L₁ = L₂ mı? → Karar verilebilir

💻 Uygulama Alanları

Programlama ve Yazılımlar

  • Metin Düzenleyiciler: Bul/Değiştir işlemleri
  • Derleyiciler: Token tanıma (lexical analysis)
  • Veri Doğrulama: E-posta, telefon, tarih formatları
  • Web Geliştirme: Form validasyonları

Günlük Hayatta

  • Arama Motorları: Pattern-based arama
  • Biyoinformatik: DNA dizilim analizi
  • Ağ Güvenliği: Intrusion detection
  • Doğal Dil İşleme: Tokenization

📝 Bilgi Testi - Modül 2

Düzenli ifadeler konusundaki bilginizi test edin.

1. Aşağıdakilerden hangisi düzenli ifade operatörü değildir?

2. Σ = {a,b} için (ab)* düzenli ifadesi hangi dili tanımlar?

3. Düzenli diller hangi işlem altında kapalı değildir?

4. a+ düzenli ifadesi ne anlama gelir?

5. Düzenli ifadelerde ε sembolü neyi temsil eder?

6. Σ = {0,1} için (0|1)*01 ifadesi hangi dili tanımlar?

7. Düzenli ifadelerde üyelik problemi karar verilebilir mi?

8. ab* ifadesi Σ = {a,b} için hangi dili tanımlar?

9. Düzenli ifadelerin en yaygın uygulama alanı nedir?

10. (a|b)* ifadesi ne üretir?

Doğru: 0 Toplam: 10

💡 Flashcard'lar - Modül 2

Düzenli ifadeler konusundaki önemli kavramları tekrar edin.

Modül 2 - Temel Kavramlar
Düzenli İfade Nedir?
Dil tanımlayıcı ifadedir. Düzenli ifadeler ile tanımlanan diller düzenli diller (regular languages) olarak adlandırılmaktadır.
Modül 2 - Operatörler
Birleştirme Operatörü
İki düzenli ifadeyi ardışık olarak birleştirir. Notasyon: xy veya x·y. Örnek: Σ = {a,b} için ab = {"ab"}
Modül 2 - Operatörler
Birleşim Operatörü
İki düzenli ifadeden en az birini sağlayan kelimeler. Notasyon: x|y veya x+y. Örnek: a|b = {"a", "b"}
Modül 2 - Operatörler
Kleene Yıldız (*)
Bir sembolün sıfır veya daha fazla kez tekrarlanması. Örnek: a* = {ε, a, aa, aaa, ...}
Modül 2 - Operatörler
Kleene Artı (+)
Bir sembolün bir veya daha fazla kez tekrarlanması. Örnek: a+ = {a, aa, aaa, ...}
Modül 2 - Özel Semboller
ε (Epsilon) Sembolü
Boş kelimeyi temsil eder. Düzenli ifadelerde başlangıç noktası olarak kullanılır.
Modül 2 - Özellikler
Düzenli Diller Kapalı mı?
Evet, birleşim, birleştirme ve yıldız işlemleri altında kapalıdır. Ancak kesişim ve tümleme altında kapalı değildir.
Modül 2 - Karar Problemleri
Üyelik Problemi
Verilen bir kelimenin düzenli dilde olup olmadığını belirleme problemi. Düzenli diller için karar verilebilir.
Modül 2 - Örnekler
x* Düzenli İfadesi
Σ = {x} için L = {ε, x, xx, xxx, xxxx, .....} kümesini tanımlar. x sembolünün 0 veya daha fazla tekrarı.
Modül 2 - Örnekler
(ab)* Düzenli İfadesi
Σ = {a,b} için L = {ε, ab, abab, ababab, ......} kümesini tanımlar. ab deseninin 0 veya daha fazla tekrarı.
Modül 2 - Uygulamalar
Derleyicilerde Kullanım
Token tanıma (lexical analysis) işlemlerinde kullanılır. Programlama dillerinin yapılarının tanınmasında temel rol oynar.
Modül 2 - Uygulamalar
Metin İşlemede Kullanım
Bul/değiştir işlemleri, veri doğrulama (e-posta, telefon formatları), form validasyonları gibi alanlarda kullanılır.
Modül 2 - Kurallar
Düzenli İfade Kuralları
Eğer r ve s düzenli ifadeler ise: (r)(s)=rs, (r)|(s)=r+s, (r)* düzenli ifadelerdir. Ayrıca ε ve ∅ temel düzenli ifadelerdir.
Modül 2 - Özellikler
Pomping Lemma
Düzenli diller için geçerli olan önemli bir teoremdir. Sonsuz düzenli dillerin belirli bir yapıya sahip olduğunu gösterir.