Graf Teorisi II

Bir önceki yazımda graflara giriş yaptık. Bu yazımda çift parçalı graflardan bahsedeceğim.

İki Parçalı Graflar (Bipartite Graphs)

Bir graf’ı oluşturan düğümleri iki farklı kümeye ayırabiliyorsak ve bu iki kümenin elemanlarından küme içerisindeki bir elemana gidilmiyorsa. Yani bütün kenarlar (edges) kümeler arasındaki elemanlar arasındaysa, bu graflara iki parçalı graf (bipartite graph) ismi verilir.

graf2

Şekil-1

G grafının noktalar kümesi matematikte V(G) olarak gösterilir. Şekil-1’deki örnekte V(G)={A,B,C,D,E}.  G grafının kenarları ise şunlardır : E(G)={{A, B}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D}, {D, E}}. Şimdi artık G çizgesini (V(G), E(G)) ikilisi olarak gösterebiliriz.

X ve Y iki küme olsun. V(G)=X∪Y ve X∩Y=∅ şeklinde V(G)’yi iki ayrı kümede toplayabiliyorsak G grafı iki parçalı graftır deriz.

Örneğin yukarıdaki graf iki gruba ayrılmıyor ayırabilsek bile kendi içinde ilişki oluyor. Yani iki parçalı değildir.

graf3

Şekil-2

Örneğin Şekil-2’deki graf iki parçalı bir graftır çünkü görüldüğü gibi 2 ayrı kümeye ayırabildik ve küme  içerisindeki köşeler ilişkili değil ancak diğer kümedeki köşelerle ilişkilidir.

Graf Teorisi

Graf Teorisi I

Graflar, ayrık matematiğin çok popüler bir konusudur. Bunlar, nesnelerin sınırlı bir koleksiyonunu ve aralarındaki çiftli ilişkileri temsil eder. Örnek: Bir “arkadaşlık grafiği”, bize hangi gruptaki insanların arkadaş olduğunu söyler.

Grafları tanımlamak için, kümelerle ilgili birkaç temel şeyi bilmemiz gerekir.

Kümeler

Bir küme farklı nesnelerin iyi tanımlanmış sırasız bir koleksiyonudur. Bir kümeyi oluşturan nesneler herhangi bir şey olabilir: rakamlar, insanlar, alfabe harfleri vs…Kümedeki her eleman tam olarak bir kez oluşur.

Şöyle bir küme örneği belirleyebiliriz:

P = {Ali, Burak, Can}

Bu, {Burak, Ali, Can} ile aynıdır. Kümenin elemanları sırasızdır. Küme üyeliğini şu şekilde ifade ederiz:

set1

Ayrıca diğer kümelerden oluşan kümeleri ele alabiliriz. Örneğin, F kümesi, P içindeki insan çiftlerinin arkadaş olanlarını gösterebilir:

F = {{Ali, Burak}, {Ali, Can}}

Her seferinde büyük veya sonlu kümelerle çalışmamız gerekecek. Bu gibi durumlarda, tüm elemanları listelemek iyi bir seçenek değildir; bu nedenle, elemanların yerine getirmesi gereken bir yüklem tarafından bir gruba üyelik belirtiriz.

E = {n: n çift tam sayı}
= {n: k bir tam sayıdır, n = 2k}

Bazı kümeler standart adlara sahiptir, boş set için ø, tam sayılar için Z, doğalsayılar için N, gerçel sayılar için R gibi…

set3

Kardinalite (Nicelik): Kardinalite |A|, sonlu A kümesinin elemanlarının sayısıdır. Yukarıdaki örneklerde, |P| = 3, |F| = 2 ve |E| tanımsızdır çünkü E  kümesi sonsuzdur.

Kümeler arasındaki ilişkiler ve kümeler üzerinde işlemler: Diyelim ki A, B’nin alt kümesidir o halde A⊆B şeklinde ifade ederiz. Eğer A’nın her elemanı B’nin de bir elemanıysa A kapsanır B veya A, B’nin öz altkümesidir diye ifade ederiz.Gösterimi:A⊂B şeklinde olur. A, B’nin bir alt kümesidir fakat eşit değildirler.

Dikkat!: ⊆, ⊂, ∉ ifadelerini karıştırmayalım.

A ve B kümelerinin birleşimi (A∪B), A veya B’de bulunan şu elemanlardan oluşur:

(A∪B) = {x: x∈A veya x∈B}

A ve B kümelerinin kesişimi (A∩B), hem A’da hem B’de bulunan şu elemanlardan oluşur:

(A∩B) = {x:x∈A ve x∈B}

Eğer A∩B = Ø ise A ve B ayrık kümelerdir. Küme farkı (A-B) ise A kümesinde olup B’de olmayan elemanları kapsar.

A – B = {x: x∈A ve x∉B}

A kümesinin tümleyeni (A’) ise A kümesi dışındaki elemanları ifade eder.

A’={x:x∉A}

 Örneğin, tamsayılar hakkında konuşursak, çift sayılar kümesinin tümleyeni tek sayılar kümesidir.

Graflar

Basit bir graf bir çift kümedir (V,E) burada V boş olmayan sonlu bir kümedir. E ise V’nin iki elemanlı alt kümeleridir.

V (vertices) elemanları köşeler olarak adlandırılır; E (edges) elemanları kenarlar olarak adlandırılır.

Dikkat edin {v,v} kenar değildir. Çünkü {v,v} = {v}, V’nin 1 elemanlı bir altkümesidir.

Örnek: G = (V,E)

V = {a,b, c, d, e}
E = {{a, b}, {b, c}, {a, c}, {c, d}}

G grafı, 5 köşe 4 kenardan oluşur. Grafik küçük olduğunda, bu durumda olduğu gibi, diyagramını rahatlıkla çizebiliriz. Noktaların konumu ve kenar şekilleri önemli değildir.Grafın şekli Şekil-1’deki gibidir.

 

graf1Şekil-1

Eğer {u,v} bir kenarsa u köşesi v köşesine bitişiktir veya komşudur denilir. v köşesinin derecesi deg(v) v’nin komşu köşe sayıları kadardır. Örneğin G’de, a’nın ve b’nin derecesi 2, c’nin derecesi 3, d’nin derecesi 1 ve e’nin derecesi 0’dır.

Önsav: Tüm köşelerin derece toplamı kenar sayısının iki katına eşittir.

Gerçekten de G’nin 4 kenarı ve toplam derecesi 8’dir.

 

Kart Oyunu

Soru: Bir oyunda toplam 10 tane oyun kartı vardır ve kartların her birinin ön yüzüne 1 ile 10
arasında farklı bir sayı yazılmıştır. 3 tane kart (yerine konmadan) ardışık olarak rastgele
seçildiğinde bu seçilen kartların küçükten büyüğe sıralı olma ihtimali kaçtır?

 

Cevap: Bu bir permütasyon sorusudur. Öncelikle 10 kartı nasıl sıralayabileceğimizi hesaplarız daha sonra sıralı halde kaç tane olduğunu hesaplarız.
P(10,3) = 10!/3! = 10.9.8=720
Sıralı halde olanlar ise şöyledir:
8+7+…..+1 (1 ve 2 seçersem 8 ihtimal var 1 ve 3 seçersem 7 ihtimal var…)
7+6+…..+1 (2 ve 3 seçersem 7 ihtimal var 2 ve 4 seçersem 6 ihtimal var…)
1 (8,9,10)
Toplam 120 yapıyor.
Sonuç = 120 / 720 = 1/6

yeniden dfa :)

Soru: Alfabemiz Σ={0,1,2} den oluşsun. L1={ w € Σ*: w 0 ile başlıyor veya 0 ile bitiyor fakat her iki durum söz konusu değil }

Buna göre L1 dilini tanıyan DFA’yı oluşturun. Açıklayınız.

Not = € (elemanıdır manasına geliyor)

Çözüm:

L1 diline ait  dfa yukaridaki gibidir.

5 tane durumumuz var : q0,q1,q2,q3,q4. Eğer O ile başladıysak O ile DFA yı bitiremeyiz. Bu yüzden O ile q3 durumuna ulaşmayız. Yukardaki gibi  q1 durumuna O ları götürebiliriz. Eğer 1 veya 2 ile başladıysak O ile bitirmemiz gerek. Aksi taktirde şartımız şağlanmaz.

chomsky hiyerarşisi

en basit şekilde chomsky hiyerarşisi aşağıdaki gibidir.

Tip 0: yinelemeli sıralı diller (kısıtlamasız dilbilgisi)
Tip 1: context-sensitive diller (context-sensitive dilbilgisi)
Tip 2: context-free diller (context-free dilbilgisi)
Tip 3: düzenli (regüler) diller (sağ-doğrusal ve sol-doğrusal dilbilgileri)

Dileri tanıyan modeller ise şöyle:

Tip 0: Turing Makinesi
Tip 1: Doğrusal Sınırlandırılmış Otomat (Linear Bounded Automata)
Tip 2: Pushdown Otomat
Tip 3: Sonlu Otomat(NFA,DFA)

programlama

Soru:

int a[3][4]={{1, 2, 3, 3}, {4, 5, 6, 6}, {7, 8, 9, 9}};

short b[4][2]={{1, 1}, {1, 0}, {0, 0}, {0, 1}}, i;

void main() {

for (i=0; 2*b[i][1]+b[i][0]; i++)

printf(“%d %d “, a[b[i][0]][i], a[i+1][i]);

}

Yukarıda verilen programın çıktısı ne olur?

(Not:Bilgisayar kullanmadan çözmeye çalışın)

Çözüm:

Çıktı Şöyle olur:
4 4 5 8

turing

Soru: n ≥ 1 olmak üzere

  

işlemini gerçekleştiren Turing makinasını tasarlayın. Biçimsel tanımını verin.

Çözüm:

1- Önce 0 yerine T koyulur.

2- Sağdaki 1 ler T nin solundaki B lerin yerine taşınır. 1 sayısı kadar 2 T lerin soluna eklenir.

3- 1 lerin 2 katı alınıp tekrar eski yere getirilir. (2 katı alınıdığı zaman sonuç sağa kayıyor. Bunun için sola öteleme yapıyoruz.)

 4. 1. adıma dönülür taki 0 lar bitene kadar. En sonunda 1 tane 2 eklenir.