Bölüm 1: Giriş

Veri Yapıları
Dijital veriVeri tipleriSoyut veri tipleri Algoritma analiziBig OTemel veri yapıları
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Dijital Veri

Dijital Veri (Digital Data)

  • Sayı, metin, görüntü ve ses gibi bilgilerin elektronik olarak temsil edilmesi için kullanılan bir formattır.
  • Örnekler: Metin belgeleri, resim dosyaları, veritabanı, ses kayıtları.
Mikrofondan gelen ses ADC ile 0101101 dijital veriye çevriliyor, bilgisayarda işleniyor, DAC ile tekrar sese dönüştürülüp kulaklıkta dinleniyor.

Analog ses → ADC → 0 ve 1'ler → bilgisayar → DAC → analog ses

Dijital Veri

Dijital Verinin Özellikleri

Sayısal Olması

Veriler 0 ve 1 (ikili) olarak temsil edilir.

1011 0010
Kolay Saklama

Elektronik ortamda saklanabilir ve kolayca paylaşılabilir.

disk · bulut · ağ
İşlemeye Uygun

Bilgisayarlar üzerinde hızlı bir şekilde işlenebilir.

~10⁹ işlem / saniye
Bilgisayar yalnızca 0 ve 1'leri tanır. Veri yapıları, bu bitleri anlamlı ve verimli bir düzende tutmanın yollarıdır.

Dijital Veri

Dijital Verinin Temsil Biçimleri

Metin

ASCII, Unicode gibi karakter kodlamaları.

'A' → 65 → 01000001
Sayısal

Tam sayılar, kayan nokta sayıları.

13 → 00001101 · 3,14 → IEEE 754
Görüntü

Piksellerin renk değerleri.

kırmızı piksel → (R, G, B) = (255, 0, 0)
Ses

Ses dalgalarının dijital örneklemi.

CD kalitesi → saniyede 44.100 örnek

Dijital Veri

Dijital Veri Türleri

TürAçıklamaÖrnek
YapısalBelirli bir şemaya göre düzenlenmiş veriİlişkisel veritabanı tabloları, CSV
Yarı YapısalEtiketlerle kısmen düzenlenmiş veriXML, JSON
Metinİnsanlar tarafından okunabilen metinlerTXT, e-posta
Resim ve GrafikGörsel verilerJPG, PNG
Ses ve MüzikSes kayıtlarıMP3, WAV

Veri Yapılarına Giriş

Veri Yapıları ve Algoritmalar

Algoritma
  • Belirli bir görevi gerçekleştirmek için adım adım hazırlanan bir plan veya talimatlar bütünüdür.
  • Bilgisayar biliminde temel bir yapı taşıdır.
Veri Yapısı
  • Verilerin organize edilmesini sağlayan ve depolanma biçimlerini tanımlayan yapılardır.
  • Verilerin etkili yönetimi ve işlenmesi için temel altyapıyı sağlar.
  • Etkili algoritmalar ve veri yapıları, yazılımın verimli çalışmasını sağlar.
  • Problemlere sistemli ve etkili çözümler sunar.
Algoritmalar + Veri Yapıları = Programlar
Niklaus Wirth'ün 1976 tarihli kitabının adı

Veri Yapılarına Giriş

Veri Yapıları

  • Verileri bilgisayarda düzenlemenin ve saklamanın bir yoludur.
  • Temel amacı, verilere hızlı ve etkili bir şekilde erişmeyi sağlamaktır.
  • Veri yapılarını anlamak, yazılım geliştirme sürecinde çok önemlidir.
  • Doğru veri yapısı seçimi, programın performans ve verimliliğini arttırır.
Mutfak eşyalarının karışık halde durduğu dağınık bir çekmece. Mutfak eşyalarının bölmelere ayrılarak düzenlendiği bir çekmece.

Aynı eşyalar: solda dağınık, sağda düzenli.
Aradığını hangisinde daha hızlı bulursun?

Veri Yapılarına Giriş

Temel Yapı Taşları

  • Nesneler: Nitelikleri, isimlendirilmiş alanlara sahip tek bir birimde gruplar.
  • Diziler: Varlıkları, bellekte ardışık yuvalarda toplu olarak saklar.
  • Bağlantılar: Varlıklar arasında isteğe bağlı yönlü ilişkilere olanak tanır.
Nesneler
Kitap tutan bir kişi Kitap yığını taşıyan bir kişi
Diziler
Bağlantılar

Veri Yapılarına Giriş

İlkel (Primitive) Veri Tipleri

Java tipiBoyutDeğerler
byte8 bit−128 … 127
short16 bit−32.768 … 32.767
int32 bityaklaşık ±2,1 milyar
long64 bityaklaşık ±9,2·1018
float32 bitondalıklı (≈7 basamak)
double64 bitondalıklı (≈15 basamak)
boolean—true / false
char16 bitUnicode karakter
  • Tam sayılar, ondalıklı sayılar, mantıksal değerler ve karakterler.
  • Basit ve temel veri tipleridir.
  • Bellekte sabit bir boyuta sahiptirler.
  • İşlemci tarafından doğrudan işlenebilirler.

Veri Yapılarına Giriş

Veri Tipleri

  • Veri Tipi: Bir değer kümesini ve davranışlarını tanımlar.
  • Değer Kümesi: Bir veri türünün alabileceği geçerli değerler.
  • Davranışlar: Değerler üzerinde gerçekleştirilebilecek işlemler.
  • Her işlem her türde geçerli değildir.
  • Tip Güvenliği: Veri türleri, hataları en aza indirmek için kullanılır. Kısıtlamalar, programcılara neyin mümkün olup olmadığını söyler.
Tam Sayılar

Toplama, çıkarma, çarpma, bölme gibi işlemler.

7 / 2 → 3
Metin Dizileri

Karşılaştırma, birleştirme, alt dize alma gibi işlemler.

"veri" + "yapısı"
Geçersiz işlem

Derleyici hatayı çalıştırmadan yakalar.

"abc" * 2 → derleme hatası

Veri Yapılarına Giriş

İlkel Olmayan (Non-Primitive) Veri Yapıları

Daha karmaşık veri yapılarıdır. Örneğin:

SıralıDiziler, listeler
BağlantılıBağlı listeler
HiyerarşikAğaçlar
Ağ (Network)Çizgeler
İndekslenmişHash tabloları
…Kümeler, eşlemeler
  • Karmaşıktır ve birden fazla ilkel veri tipini içerebilir.
  • Çoğu dinamik boyutludur (diziler hariç); saklanan veri miktarı değişebilir.
  • Özelleştirilmiş işlemleri gerçekleştirmek için kullanılırlar.

Veri Yapılarına Giriş

Farklı Veri Yapıları

Her birinin kendine özgü güçlü ve zayıf yönleri bulunur.

Diziler (Arrays)Verileri düzenlemek ve erişmek için kullanılır. Boyutu sabittir.
Bağlı Listeler (Linked Lists)Verileri bağlantılı bir şekilde saklar. Esnek boyutludur.
Yığınlar (Stacks)Son giren ilk çıkar (LIFO). Örneğin, geri alma işlemi.
Kuyruklar (Queues)İlk giren ilk çıkar (FIFO). İşlem sıralaması için kullanılır.
Ağaçlar (Trees)Hiyerarşik verileri temsil eder. Örneğin, veritabanı indeksleri.
Eşleme, Küme, ÇizgeAnahtar-değer çiftleri, tekil öğeler ve ilişki ağları.

Veri Yapılarına Giriş

Soyut Veri Tipleri ve Veri Yapıları

Soyut Veri Tipi (ADT)
  • Listeler, yığınlar, kuyruklar, kümeler, eşlemeler, çizgeler…
  • Hangi işlemlerin yapılabileceğini (davranışı) belirler.
  • İmplementasyon detaylarına odaklanmaz.
Veri Yapısı (Data Structure)
  • Bağlı listeler, diziler, komşuluk matrisleri…
  • Soyut veri tiplerini uygulayan somut yapılardır.
  • Bellek ve performans detaylarına odaklanır.
Liste ADT ekle · sil · al(i) · boyut Dizi Bağlı liste

Veri Yapılarına Giriş

Verilerin Düzenlenmesi

Konumsal olmayan
Sıralı
Ağaç
Çizge
DüzenİlişkiGünlük hayattan örnek
Konumsal olmayanilişkisizsınıftaki öğrenciler
Sıralıbire-birsıra bekleyen öğrenciler
Ağaçbire-birçokaile ağacı
Çizgebirçoğa-birçokyol haritası

Veri Yapılarına Giriş

Veri Yapısı Seçimi

Aşağıdaki sorular kritik rol oynar:

  • Veri yapısı başlangıçta tamamen doldurulabilir mi?
  • Veri yapısından öğeler silinebilir mi?
  • Ekleme sırasının önemi var mı?
  • Veri yapısındaki öğeler sıralanabilir mi?
  • Öğeler belirli bir sıra ile mi işlenir, yoksa rastgele erişim de gerekli mi?
Durum değişmeyecekseDurağan (static) yapılar tercih edilebilir.
Sık ekleme / silme varsaDinamik ve esnek veri yapıları düşünülmelidir.

Algoritma Analizi

Algoritmalar

  • Bir algoritma, bir problemi çözmek için adım adım bir prosedürdür.
  • Aynı problemi çözmek için farklı algoritmalar bulunabilir; bazıları diğerlerine göre daha verimli çalışır.
  • Doğru algoritma seçimi kritik öneme sahiptir: iyi bir algoritma, işi daha az kaynak kullanarak yapar.

Bazı yaygın algoritmalar:

SıralamaVerileri belirli bir sıraya göre düzenler.kabarcık, birleştirme sıralaması
AramaBelirli bir öğeyi veri kümesinde bulur.doğrusal arama, ikili arama
ÇizgeÇizge teorisi problemlerini çözer.en kısa yol, ağ akışı

Algoritma Analizi

İyi Bir Algoritma

Bir problemi etkili bir şekilde çözen algoritmadır. Dört ölçüte bakarız:

Zaman Karmaşıklığı (Time Complexity)Çalışma süresi veya işlem sayısı gibi faktörler zaman karmaşıklığını belirler.
Alan Karmaşıklığı (Space Complexity)Algoritmanın kullandığı bellek miktarı alan karmaşıklığını belirler.
Doğruluk (Correctness)Her geçerli girdi için doğru sonucu üretmelidir. Yanlış sonuç veren bir algoritma kullanışsızdır.
Sağlamlık (Robustness)Çeşitli durumlar ve girdilerle başa çıkabilmeli, farklı senaryolara uyum sağlayabilmelidir.

Algoritma Analizi

Zaman Karmaşıklığı ve Büyük O (Big O)

  • Algoritmanın ne kadar sürede çalıştığını, girdi boyutu n'ye bağlı olarak ifade eder.
  • Büyük O gösterimi, çalışma süresi için bir üst sınır belirtir; genellikle en kötü durum için kullanılır.
  • O(1): girdi boyutundan bağımsız, hep aynı sürede çalışır.
  • O(n): girdi büyüdükçe süre doğrusal olarak artar.
n arttıkça işlem sayısı
Big O'da yalnızca en hızlı büyüyen terim önemlidir; sabitler ve küçük terimler atılır:
3n2 + 5n + 2 → O(n2)  ·  4n + 100 → O(n)  ·  7 → O(1)

Algoritma Analizi

Büyük O Gösterimi Örnekleri

GösterimAdıÖrnekNeden?
O(1)SabitDizinin ilk elemanına erişmeDizinin boyutu ne olursa olsun erişim süresi sabit
O(log n)LogaritmikSıralı dizide ikili aramaHer adımda arama alanı yarıya iner
O(n)DoğrusalDiziyi baştan sona taramaHer eleman bir kez işlenir
O(n log n)Doğrusal logaritmikBirleştirme sıralaması (Merge Sort)Böl ve fethet: log n seviye, her seviyede n iş
O(n2)KareTüm eleman çiftlerini karşılaştırmaİç içe iki döngü
O(2n)ÜstelTüm alt kümeleri bulman elemanlı kümenin 2n alt kümesi var

Algoritma Analizi

n Büyüdükçe Ne Olur?

Karmaşıklıkn = 10n = 100n = 1.000
log2 n3,36,610
n101001.000
n log2 n336649.966
n210010.0001.000.000
2n1.024≈ 1,3·1030≈ 1,1·10301
Saniyede 109 işlem yapan bir bilgisayar, n = 100 için 2n adımı yaklaşık 4·1013 yılda bitirir. Evrenin yaşı ≈ 1,4·1010 yıl.

Algoritma Analizi

Koddan Karmaşıklığa

O(1)
int ilk(int[] a) {
    return a[0];
}
O(n)
int toplam(int[] a) {
    int s = 0;
    for (int x : a)  // n kez
        s += x;
    return s;
}
O(n²)
boolean tekrarVar(int[] a) {
    for (int i = 0; i < a.length; i++)
        for (int j = i + 1; j < a.length; j++)
            if (a[i] == a[j])
                return true;
    return false;
}
// dış döngü n, iç döngü ≈ n/2
// → n(n−1)/2 karşılaştırma

Kural: sabitler ve küçük terimler atılır. n(n−1)/2 = n²/2 − n/2 → O(n²)

Algoritma Analizi

Alan Karmaşıklığı

  • Algoritmanın kullandığı bellek miktarını ölçer; genellikle Büyük O gösterimiyle ifade edilir.
  • Bellek kullanımının girdi boyutuna bağlı artışını gösterir.
  • Sınırlı bellek kaynaklarına sahip sistemlerde bellek verimliliği önemlidir.
O(1) · SabitÖrnek: bir değişken oluşturma. Bellek kullanımı girdi boyutuyla değişmez.
O(n) · DoğrusalÖrnek: bir dizinin tüm elemanlarını saklama. Bellek, girdi boyutuyla doğru orantılı artar.
O(n2) · KareÖrnek: n×n boyutunda bir matrisi saklama. Bellek, n'nin karesiyle artar.

Algoritma Analizi

Doğruluk (Correctness)

  • Doğruluk, bir algoritmanın başarısını belirleyen en temel faktördür.
  • Doğru bir algoritma, her geçerli girdi için sonlu sürede beklenen çıktıyı üretir.
  • Hızlı çalışan ama yanlış sonuç veren bir algoritmanın değeri yoktur.

Doğruluk nasıl gösterilir?

Test SenaryolarıÇıktılar, bilinen doğru sonuçlarla karşılaştırılır.
Uç DurumlarBoş girdi, tek eleman, en büyük/en küçük değerler denenir.
Döngü DeğişmeziHer adımda doğru kalan bir özellikle doğruluk ispatlanır.
Karşı ÖrnekTek bir yanlış sonuç, algoritmanın doğru olmadığını gösterir.

Algoritma Analizi

Sağlamlık (Robustness)

  • Algoritmanın beklenmeyen durumlarla başa çıkma yeteneğidir.
  • Sağlam bir algoritma, normal aralığın dışındaki girdileri bile çökmeden veya yanlış sonuç üretmeden işleyebilir.

Sağlamlık nasıl sınanır?

Geçersiz GirdilerUygun olmayan veya beklenmeyen girdilerle başa çıkma.null, negatif boyut
Hatalı VerilerBozuk veya eksik verilerle başa çıkma.eksik satır, yanlış biçim
Büyük Veri KümeleriÇok büyük girdileri işleyebilme.10⁸ kayıt
Aşırı YüklenmeAlgoritmanın aşırı yük altında nasıl davrandığı.aynı anda binlerce istek

Temel Veri Yapıları

Diziler (Arrays)

  • Verileri ardışık olarak bir bellek bloğunda saklar.
  • Tüm öğeler aynı türdedir ve bellekte eşit boyutta yer kaplar.
  • Her öğeye indeksiyle doğrudan erişilir: adres = başlangıç + i × öğe boyutu
  • Verileri düzenli saklamak ve hızlı erişim sağlamak için kullanışlı bir veri yapısıdır.
Bir hücreye tıkla: üst sıra indis, alt sıra değer.
int[] a = {7, 2, 9, 5, 1};   // 5 elemanlı dizi, indisler 0…4
int x = a[2];                // x = 9, tek adımda erişim
a[4] = 8;                     // indis 4'teki değer güncellenir

Temel Veri Yapıları

Diziler: Avantajlar ve Dezavantajlar

Avantajları

  • Doğrudan indeksleme ile verilere hızlı erişim sağlar (O(1)).
  • Verileri düzenli bir şekilde saklar.
  • Kolay bir kullanım sunar.

Dezavantajları

  • Sabit boyuta sahiptir; veri boyutu dinamik olarak değiştirilemez.
  • Araya ekleme ve silme maliyetlidir; sonraki öğelerin kaydırılması gerekir (O(n)).
7 4 2 9 5 4'ü indis 1'e eklemek için 3 öğe kaydırıldı

Temel Veri Yapıları

Bağlı Listeler (Linked Lists)

baş 7 2 9 5 null veri sonraki
  • Verileri, birbirine referanslarla bağlanan düğümlerde (node) saklar.
  • Her düğüm, veriyi ve bir sonraki düğümün referansını içerir; "baş" listenin başlangıcını gösterir.
  • Düğümlerin bellekte ardışık olması gerekmez.
  • Verilerin dinamik olarak büyüyüp küçüldüğü ve sık ekleme/silme yapılan durumlarda kullanışlıdır.

Temel Veri Yapıları

Bağlı Listeler: Avantajlar ve Dezavantajlar

Avantajları

  • Veri boyutu dinamik olarak değişebilir.
  • Düğümler listeye eklenebilir, listeden çıkarılabilir.
  • Ekleme ve silme, öğeleri kaydırmadan yalnızca bağlantılar güncellenerek yapılır.

Dezavantajları

  • Erişim, düğümler arasında baştan gezinme gerektirdiği için dizilere göre yavaştır (O(n)).
  • Her düğüm bir de referans taşıdığından daha fazla bellek kullanır.
7 2 9 4 yalnızca 2 bağlantı değişir

Temel Veri Yapıları

Yığınlar (Stacks)

  • Verileri son giren, ilk çıkar (LIFO - Last-In, First-Out) mantığına göre saklar.
  • Yeni öğe yığının en üstüne eklenir (push).
  • Çıkarılırken en son eklenen öğe çıkarılır (pop).
  • "Üst" (top), en son eklenen öğeyi gösterir.
  • Tabak yığını gibi düşünülebilir: yalnızca en üstteki alınır.

Temel Veri Yapıları

Yığınların Kullanım Alanları

Özyinelemeli Fonksiyonlar (Recursion)Fonksiyon kendini çağırdığında her çağrı bir yığın çerçevesi olarak saklanır. Böylece fonksiyon tamamlandığında çağrıldığı yere geri dönebilir.
Geri İzleme (Backtracking)Olasılıklar denenip geri adım atılması gerektiğinde yığınlar kullanılır (ör. labirent çözme).
İşlem Geçmişi (Undo/Redo)Kullanıcı işlemlerini geri almak (Undo) veya geri getirmek (Redo) için yığınlar kullanılır.
İfade DeğerlendirmeParantez eşleştirme ve infix → postfix dönüşümü yığınla yapılır (Bölüm 4).

Temel Veri Yapıları

Kuyruklar (Queues)

  • Verileri ilk giren, ilk çıkar (FIFO - First-In, First-Out) mantığına göre saklar.
  • Öğeler "arka"dan eklenir (enqueue), "ön"den çıkarılır (dequeue).
  • Market kasasındaki sıra gibi: ilk gelen ilk hizmet alır.

Temel Veri Yapıları

Kuyrukların Kullanım Alanları

Görev Çizelgeleme (Task Scheduling)İşlemcinin görevleri sırayla çalıştırmasına yardımcı olur. Kuyruğa ilk giren görev ilk olarak çalıştırılır.
İstek İşleme (Request Processing)Sunucular gelen istekleri kuyrukta sıraya alır ve sırayla işler; talep yükünü yönetmek için kullanışlıdır.
Yazdırma KuyruğuYazıcıya gönderilen belgeler geliş sırasıyla basılır.
Algoritmalar (Algorithms)Örneğin genişlik öncelikli arama (BFS) algoritması bir kuyruk kullanır.

Temel Veri Yapıları

Ağaçlar (Trees)

  • Verileri hiyerarşik bir yapı içinde saklar.
  • Her ağacın bir kök düğümü (root) vardır; diğer düğümler kökten dallanır.
  • Her düğümün sıfır veya daha fazla çocuğu olabilir; çocuğu olmayan düğümlere yaprak (leaf) denir.
  • Örnekte: kök 1; kökün çocukları 2 ve 3; 2'nin çocukları 4 ve 5.
1 2 3 4 5 kök yapraklar
KökEbeveyni olmayan tek düğüm: 1
Ebeveyn / Çocuk2, hem 4'ün hem 5'in ebeveynidir
YaprakÇocuğu olmayan düğümler: 3, 4, 5
YükseklikKökten en uzak yaprağa kenar sayısı: 2

Temel Veri Yapıları

Ağaçların Kullanım Alanları

Dosya Sistemi (File System)Kök düğüm ana dizini, alt düğümler alt klasörleri veya dosyaları temsil eder.C:\ → Users → Sercan → Belgeler
Biyolojik Taksonomi (Taxonomy)Canlıların sınıflandırılmasında her takson (familya, cins, tür…) ağaç içinde bir düğümdür.
Veritabanı İndeksleri (Database Indexing)İndeks ağaçları (ör. B-ağacı) verileri sıralı tutar ve erişimi hızlandırır.
HTML Belgeleri (DOM)Bir web sayfasının öğeleri iç içe bir ağaç oluşturur.

Temel Veri Yapıları

Eşleme Veri Yapısı (Maps)

  • Anahtar-değer çiftlerini saklar; her anahtar bir değerle eşleştirilir.
  • Anahtarlar benzersizdir ve her biri yalnızca bir değeri temsil eder.
  • Anahtar kullanarak değerlere hızlı erişim sağlar.
  • Büyük veri koleksiyonlarını etkili bir şekilde işlemek için kullanışlıdır.
AnahtarDeğer
"Ad""Ali"
"Soyadı""Veli"
"Yaş"30
"Şehir""İstanbul"
Map<String, Object> kisi = new HashMap<>();
kisi.put("Ad", "Ali");   kisi.get("Ad");  // → "Ali"

Temel Veri Yapıları

Eşleme Kullanım Alanları

Veritabanı İşlemleriAnahtarlarla değerlere erişmek için kullanılır. Özellikle NoSQL veritabanlarında yaygındır.
Önbellek YönetimiSık kullanılan verilere hızlı erişim sağlar; ör. web sayfaları URL'lerine göre önbellekte tutulur.
Yapay Zeka ve Veri AnaliziVeri indeksleme ve öznitelik eşleştirme için kullanılır; ör. kelime → frekans sayımı.
Yazılım GeliştirmeYapılandırma dosyaları, dil çevirileri ve ortam ayarları eşlemelerle tutulur.

Temel Veri Yapıları

Küme Veri Yapısı (Sets)

  • Benzersiz, tekil öğeler içerir; her öğe yalnızca bir kez bulunabilir.
  • Öğeler genellikle sırasız saklanır.
  • Bir öğenin kümede olup olmadığı hızlıca kontrol edilebilir.
  • Veri analizi, mantıksal işlemler ve veritabanı gibi alanlarda kullanılır.
AB 12345 67 A = {1, 2, 3, 4, 5} B = {6, 7} ortak öğe yok → ayrık (disjoint) kümeler

Temel küme işlemleri (X = {1, 2, 3}, Y = {3, 4}):

Birleşim (∪)X ∪ Y = {1, 2, 3, 4}
Kesişim (∩)X ∩ Y = {3}
Fark (−)X − Y = {1, 2}

Kümeye 3'ü tekrar eklemek kümeyi değiştirmez: {1, 2, 3} ∪ {3} = {1, 2, 3}.

Temel Veri Yapıları

Çizge Veri Yapısı (Graphs)

  • Düğümleri (nodes) ve bu düğümleri birbirine bağlayan kenarları (edges) içerir.
  • Nesneler arasındaki karmaşık ilişkileri modellemek ve analiz etmek için kullanılır.
  • Örnekte A, B, C, D düğümlerdir; çizgiler kenarlardır. A ile B arasında kenar varsa bu iki düğüm bağlantılıdır.
A B C D

Temel Veri Yapıları

Çizge Veri Yapısının Özellikleri

  • Düğümler (Nodes): Çizgenin temel yapı taşıdır ve verileri temsil eder.
  • Kenarlar (Edges): Düğümleri birbirine bağlar ve ilişkileri gösterir.
Yönsüz: düz çizgiler
Yönlü: oklar
472
Ağırlıklı: önem / mesafe
Öz döngü (self-loop)
  • Kenarlar yönlü (oklarla) veya yönsüz (düz çizgilerle) gösterilebilir; kenarlara ağırlık verilebilir.
  • Bir düğümün kendisine bağlanmasına öz döngü denir; çizge türüne göre izin verilebilir veya verilmez.

Temel Veri Yapıları

Çizge Kullanım Alanları

Sosyal Ağ AnaliziSosyal medyadaki kişiler düğüm, arkadaşlıklar kenardır; ilişkiler ve etkileşimler analiz edilir.
Harita ve NavigasyonKavşaklar düğüm, yollar kenardır; en kısa yol çizge algoritmalarıyla bulunur.
Şehir ve Çevre PlanlamaYollar, yeşil alanlar ve su yollarını modellemek için kullanılır.
Temel AlgoritmalarDerinlik öncelikli arama (DFS) ve genişlik öncelikli arama (BFS) çizge üzerinde çalışır.

Özet

Temel Veri Yapılarında İşlem Maliyetleri

Veri yapısıi. öğeye erişimAramaEklemeSilme
DiziO(1)O(n)O(n)O(n)
Bağlı listeO(n)O(n)O(1)†O(1)†
Yığınyalnızca üstO(n)O(1) pushO(1) pop
Kuyrukyalnızca önO(n)O(1) enqueueO(1) dequeue
Eşleme / Küme (hash)—O(1)*O(1)*O(1)*

† Konum (önceki düğüm) biliniyorsa.   * Ortalama durum; en kötü durumda O(n). Ayrıntılar ilgili bölümlerde.

Özet

Örnek Problemler

  1. Metin editöründe "geri al" için hangi veri yapısı uygundur? Neden?
  2. Yazıcıya gelen belgeleri geliş sırasıyla basmak için hangi yapı uygundur?
  3. Öğrenci numarasıyla öğrenci bilgisine hızlı erişim için hangi yapı uygundur?
  4. İki nokta arasındaki en kısa yolu bulmak için şehir haritasını nasıl modellersiniz?
  5. Listedeki tekrar eden öğeleri ayıklamak için hangi yapıyı kullanırsınız?
  6. Tüm eleman çiftlerini karşılaştıran algoritmanın zaman karmaşıklığı nedir?
Cevapları göster
  1. Yığın (LIFO): son yapılan işlem ilk geri alınır.
  2. Kuyruk (FIFO).
  3. Eşleme / hash tablosu (anahtar: öğrenci no).
  4. Ağırlıklı çizge: düğümler kavşak, kenarlar yol, ağırlıklar mesafe.
  5. Küme (set).
  6. O(n2).

Son

Bölüm 1: Giriş
Sonraki bölüm: Diziler
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.

← → veya boşluk ile gezinin · F: tam ekran · Home/End: ilk/son slayt