Anasayfa » Arşiv

Algoritmalar Kategorisindeki Yazılar

Algoritmalar, Java ve Java Teknolojileri »

[13 May 2012 | Yorum Yok | 3.847 kez okundu]
1 Star2 Stars3 Stars4 Stars5 Stars (Henüz hiç oy kullanılmadı. İlk oyu siz verin.)
Loading...
Regular Expression to DFA Converter (Düzenli İfadeden Dfa ya Çeviri Yapan Java Otomata)

Herkese merhabalar, bugün ki projemizde daha önceden geliştirdiğimiz e’nfa dan dfa ya çeviri yapan java otomatayı daha da geliştireceğiz ve verilen bir regular expression (düzenli ifade) ı dfa ya çeviren bir otomata geliştireceğiz.  Programımız yine aynı şekilde çalışmaktadır. Mevcut class larımızın üzerine yeni class lar ekleyerek programı geliştiriyoruz. Eklenen classlar şu şekilde

Converter (Çeviri işlemini yapan sınıfımız. İçerisinde ayrıca verilen regular expressionı tokenlara ayıran lexer bulunmaktadır.)
Relation
StateNfa

Ekran görüntümüz diğer projeyle çok benzerdir.

Regular expression bölümüne ifademizi yazıyoruz. İfademizde geçen harfleri ise  Language bölümüne yazıyoruz. Ardından Convert to Dfa and Draw butonuna basarak sonucu …

Devamını oku...

Algoritmalar, Java ve Java Teknolojileri »

[27 Nis 2012 | 5 Yorum | 5.569 kez okundu]
1 Star2 Stars3 Stars4 Stars5 Stars (1 oy,5 üzerinden : 5,00 )
Loading...
E ‘ NFA to DFA Converter (E ‘ Nfa dan Dfa ya Çeviri Yapan Java Otomata)

“Automata theory” dersini alan arkadaşların yakından bildikleri e’nfa (epsilon nondeterministic finite automata) dan dfa (deterministic finite automata) ya çevirme problemi vardır. Bu yazımda, bu problem için hazırlanmış nfa’yı dfa’ya çeviren bir  java projesini paylaşacağım.
Javada yazılmış bu program, elinizde mevcut olan bir epsilon nfa yı programa girerek dfa ye çevirmenizi ve dfa yı görsel olarak ekrana çizmenizi sağlamaktadır.
Programdan ekran görüntüleriyle örnek bir çeviri işlemi yapalım.
Bize verilen e’nfa şu şekilde olsun.

Bu örneği programa şu şekilde gireceğiz. Number of State bölümüne 0-10 tane state olduğu için 11 giriyoruz. Language bölümüne yukarıda ki örnekte …

Devamını oku...

Algoritmalar, Veri Yapıları »

[30 Ara 2011 | 2 Yorum | 18.958 kez okundu]
1 Star2 Stars3 Stars4 Stars5 Stars (2 oy,5 üzerinden : 4,00 )
Loading...
Breadth First Search ve Depth First Search Algoritmaları

Breadth first search ve depth first search algoritmaları graph larda gezinme ve arama algoritmalarıdır.
Bu graphlarda ilişkiler iki şekilde tutulabilir. İki boyutlu array ve linked listler ile
Breadth First Search  (Sığ Öncelikli Arama)
BFS (breadth first search) algoritmasının çalışma mantığı şu şekildedir. Verilen bir node dan başlayarak ilgili node un tüm komşuları gezilir. Daha sonra gezilen komşuların komşuları gezilerek verilen graph gezilmiş olur.
Algoritma

Fonksiyona gönderilen node kuyruğa atılır.
Kuyruk boşalıncaya kadar döngü sürdürülür.
Sıradaki node kuyruktan çıkarılır.
Çıkarılan node daha önce gezilmemiş ise, gezildi işareti konur ve gezilmemiş komşuları kuyruğa konur.

Pseudo kodunu şöyle yazabiliriz.

?View Code Cpublic void …

Devamını oku...

Algoritmalar »

[16 Ara 2011 | Yorum Yok | 3.027 kez okundu]
1 Star2 Stars3 Stars4 Stars5 Stars (1 oy,5 üzerinden : 5,00 )
Loading...
Kırmızı – Siyah Ağaç Yapıları ( Red – Black Trees) C Kodu

Merhaba arkadaşlar, bu yazımda daha önceden bahsettiğim red black tree lerin c kaynak kodlarını paylaşacağım.  Eğer red black tree ler ve algoritması hakkında bilgi sahibi olmak istiyorsanız önceki yazımı buradan okuyabilirsiniz.
Red black tree lerin c kaynak kodu şu şekildedir. Kodumuzda binary insert, binary fix up, left rotate, right rotate, inorder print gibi fonksiyonlar bulunmaktadır.
Kodumuzu çalıştırdığımızda iki seçenek sunmaktadır. İster belirlediğimiz sayıları kendimiz girebiliriz, istersek belli bir sayıyı otomatik yerleştirmesini söyleyebiliriz.

?View Code C#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
struct node
{
struct node *parent;
struct node *left;
struct node *right;
int value;
bool isRed;
};
void yazdir (int * A, int …

Devamını oku...

Algoritmalar »

[14 Ara 2011 | Yorum Yok | 4.389 kez okundu]
1 Star2 Stars3 Stars4 Stars5 Stars (Henüz hiç oy kullanılmadı. İlk oyu siz verin.)
Loading...
Dinamik Programlama (Dynamic Programming) – En Kısa Yol Problemi

Arkadaşlar bu yazımda, matematik ve bilgisayar bilimleri alanlarında karmaşık problemleri çözmek için kullanılan bir metoddan bahsedeceğim. Ardından metodla alakalı bir problem olan en kısa yol probleminin çözümünü  ve ilgili c kodlarını yazacağım.
Dinamik programlama, karmaşık bir problemi daha alt problemlere bölerek çözmeye çalışan yöntemdir. Bu işlem sırasında elde edilen veriler bir yere kaydedilerek. Daha sonra ihtiyaç olduğunda tekrar hesaplamak yerine buradan kullanılır ve zamandan kazanç elde edilir.
Bir problemi dinamik programlama yöntemiyle çözebilmek için bazı şartlar vardır. Şöyle ki:

En iyi çözümün alt çözümleri de en iyi olmak zorundadır.
Var olan karmaşık problemi daha …

Devamını oku...

Algoritmalar, Veri Yapıları »

[2 Ara 2011 | 7 Yorum | 7.193 kez okundu]
1 Star2 Stars3 Stars4 Stars5 Stars (1 oy,5 üzerinden : 5,00 )
Loading...
Kırmızı – Siyah Ağaç Yapıları ( Red – Black Trees)

Bu yazımda sizlere red black tree lerden yani kırmızı siyah diye adlandırılan ağaç yapılarından bahsedeceğim. Red Black Tree ler aslında binary search tree yapısıdır. Binary search treelerden tek farkı, extradan her nodun rengini tutan yapının olmasıdır. Bu renkler isimden de anlaşılacağı gibi kırmızı veya siyahtır.
Red black tree ler dengeli ağaçlardır. Bu yüzden en kötü zamanda bile n elemanlı bir ağaca ekleme, silme arama gibi işlemler O(logn) zamanda yapılabilir.
Her nodun bildiğimiz gibi değeri, sağ çocuğu, sol çocuğu, ebeveyni (parent) ve rengi vardır. Ayrıca red black treelerde yapraklar nill dir.
Red Black Tree lerin …

Devamını oku...