Algoritmalar II Ders 8 Açgözlü Algoritmalar.

Slides:



Advertisements
Benzer bir sunumlar
Lazer Kesim & Görüntü İşleme Yazılımı
Advertisements

IT503 Veri Yapıları ve algoritmalar
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
SINIFLANDIRMA VE REGRESYON AĞAÇLARI (CART)
Bilgi Teknolojisinin Temel Kavramları
B+-Ağaçları.
Huffman Encoding by Snowblind.
İçerik Ön Tanımlar En Kısa Yol Problemi Yol, Cevrim(çember)
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
Tam İkili Ağaçlar 9. Ünite ağaçlardan bahseder.
Özyinelemeli(Recursive) Algoritma Tasarımı
Karar Ağaçları.
En Küçük Yol Ağacı (Minimum Spanning Tree)
Algoritma ve Akış Diyagramları
Yapısal Program Geliştirme – if, if-else
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
İndex Yapıları.
Temel tanımlar ve işleyiş
FAYDALI BİLGİSAYAR PROGRAMLARI
HUFFMAN VE TELEGRAF KODLAMALARI
SINIFLANDIRMA VE REGRASYON AĞAÇLARI
BİYOİNFORMATİK NEDİR? BİYOİNFORMATİKTE KULLANILAN SINIFLAMA YÖNTEMLERİ
EXCEL’DE GRAFİK OLUŞTURMA
1.Gün MATEMATİK 1.KİTAP TOPLAMA - ÇIKARMA ANTRENMANLARLA
Resim Sıkıştırma Yonca BAYRAKDAR
ALGORİTMA.
Çarpanlar ve Katlar ÇARPANLAR.
5.Gün MATEMATİK 1.KİTAP İŞLEM ÖNCELİĞİ ANTRENMANLARLA
ENF 204 Bilgisayar Programlama Algoritma ve Akış Diyagramları
Karenin Çevresi ve Alanı
Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması
Bölme İşlemi.
BLM 304 SAYISAL VERİ İLETİŞİMİ
WORD WORD UYGULAMA.
Kareköklü Sayılar.
BAH TABLOSU.
Sayı Sistemleri Geçen Hafta Analog ve Sayısal Büyüklük Kavramı
Sayı Sistemleri Geçen Hafta Kayan Noktalı Sayılar
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Sıklık Tabloları ve Tek Değişkenli Grafikler
Algoritma Mantığı ve Akış Diyagramları
KISIM II Matematiksel Kavram ve Prosedürlerin Gelişimi
Karşılaştırıcı ve Aritmetik İşlem Devreleri
Adım Adım Algoritma.
AVL(Adel’son-Vel’skiĭ and Landis) Ağacı AVL ağacı, iki alt ağacının yükseklikleri farkının en fazla 1 olabildiği dengeli ikili arama ağacıdır. AVL ağacında.
METİNLERİ Matrislerle ŞİFRELEME
Yeşilköy Anadolu Lisesi. TANıM (KONUYA GIRIŞ) a, b, c gerçel sayı ve a ¹ 0 olmak üzere, ax 2 + bx + c = 0 biçimindeki her açık önermeye ikinci dereceden.
Hesaplama Tabloları (MS For Mac Excel -3)
Dinamik programlama ve Açgözlü algoritma
PROGRAMLAMA TEMELLERİ Burak UZUN Bilişim Teknolojileri Öğretmeni Burak UZUN.
C Programlama Dili Bilgisayar Mühendisliği.
DERS 2 SAYI DÜZENLERİ.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
MATEMATİKTE TAM SAYILARI ÖĞRENİYORUZ
RASYONEL SAYILAR MATEMATİK 7 A-) RASYONEL SAYILARDA ÇIKARMA İŞLEMİ
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Fırat Üniversitesi Mühendislik Fakültesi Elektrik-Elektronik Müh.
Veri Sıkıştırma Algoritmaları
Bilgisayar Mühendisliğine Giriş
NİŞANTAŞI ÜNİVERSİTESİ
Algoritmalar II Ders 9 Dinamik Programlama ve Açgözlü Yaklaşım Soruları.
NİŞANTAŞI ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
NİŞANTAŞI ÜNİVERSİTESİ
BİLİMSEL METİN İŞLEME AMAÇLI ALANA ÖZGÜ PROGRAMLAMA DİLİ
Algoritmalar II Ders 16 Prim algoritması.
Çizge Algoritmalari 10. Ders.
Kelime (Text) İşleme Algoritmaları
Sunum transkripti:

Algoritmalar II Ders 8 Açgözlü Algoritmalar

Huffman kodlari

Huffman kodlari Huffman kodları algoritması veri sıkıştırma için 1952 yılında Huffman tarafından üretilmiştir. Bu algoritma açgözlü yaklaşımla tasarlanmıştır.

Sıkıştırma problemi Problem: Verilen metni en az bit kullanarak sıkıştırınız (kodlayınız) 2 tür sıkıştırma vardır: -Veri kaybına yol açan sıkıştırmalar. Örneğin WhatsApp’da gönderilen fotoğraflar veri kaybına uğrar. -Veri kaybına uğramayan sıkıştırmalar, yani sıkıştırılmış metin orijinaline dönüştürülebilir

Brute force çözüm Veri kaybına yol açmadan sıkıştırma problemi aşağıdaki gibi çözülebilir: Her sembolü aynı uzunlukta ikilik sayılarla eşleştiririz.

Huffman ana fikri Veri içerisinde en az kullanılan karakter için en uzun, en çok kullanılan karakter için de en kısa kod üretelim. Bir karakterin bir metinde kullanım sayısına bu karakterin frekansı denir.

Huffman ağaci Frekans tablosunu metin dosyasını kullanarak elde ettikten sonra yapmamız gereken’’Huffman Ağacını’’ oluşturmaktır. Huffman ağacı hangi karakterin hangi bitlerle temsil edileceğini(kodlanacağını) belirlememize yarar.

Algoritma Algoritmanın adımları aşağıdaki şekildedir: 1. Her karakter frekanslarına göre küçükten büyüğe doğru sıralanır ve tüm karakterler bir ağacın yaprak düğümlerine eklenir. 2. Sırada, birden fazla düğüm kaldığı sürece aşağıdaki adımlar döngü halinde yapılır. a. Sıradan, en az frekansa sahip iki düğüm alınır. b. Yeni bir iç düğüm (internal node) oluşturulup, değer olarak bu alınan iki düğümün toplamı atanır. c. Yeni düğüm ağaca ve sıraya eklenir. 3. Döngü bitip tek düğüm kaldıysa, bu düğüm, kök düğüm yapılır ve algoritma sona erer.

ÖRNEK Bu örnekte aşağıdaki frekans tablosu kullanılacaktır. Karakter Frekans A 80 B 60 C 30 D 20 E 10 F 5 Bu örnekte aşağıdaki frekans tablosu kullanılacaktır. Bu tablodan çıkarmamız gereken şudur : Elimizde öyle bir metin dosyası var ki “A" karakteri 80 defa, “B" karakteri 60 defa .... “f" karakteri 5 defa geçiyor. Amacımız ise her bir karakteri hangi bit dizileriyle kodlayacağımızı bulmak.

ÇÖZÜM; 1 - Öncelikle "Huffman Ağacını" ndaki en son düğümleri(yaprakları) oluşturacak bütün semboller frekanslarına göre aşağıdaki gibi küçükten büyüğe doğru sıralanırlar. A 80 F 5 E 10 D 20 C 30 B 60

ÇÖZÜM; 1 En küçük frekansa sahip olan iki sembolün frekansları toplanarak yeni bir düğüm oluşturulur. Ve oluşturulan bu yeni düğüm diğer var olan düğümler arasında uygun yere yerleştirilir. - FE 15 D 20 C 30 B 60 A 80 F 5 E 10

ÇÖZÜM; 1 Aynı işlem tekrar edilir- C 30 FED 35 B 60 A 80 FE 15 D 20 F 10

ÇÖZÜM; 1 Aynı işlem tekrar edilir- CFED A B 80 60 65 C FED 30 35 FE D 15 D 20 F 5 E 10

Bir sonraki adim - A 80 BCFED 125 B 60 CFED 65 C 30 FED 35 FE 15 D 20 10

Son adim - ABCFED 205 BCFED 125 A 80 B 60 CFED 65 C 30 FED 35 FE 15 D 10

Huffman ağacının son halini oluşturduğumuza göre her bir sembolün yeni kodunu oluşturmaya geçebiliriz. Sembol kodlarını oluştururken Huffman ağacının en tepesindeki kök düğümden başlanır. Kök düğümün sağ ve sol düğümlerine giden dala sırasıyla “1" ve “0" kodları verilir. Sırası ters yönde de olabilir. Bu tamamen seçime bağlıdır. Ancak ilk seçtiğiniz sırayı bir sonraki seçimlerde korumanız gerekmektedir.

Huffman kodu - ABCFED 205 BCFED 125 A 80 B 60 CFED 65 C 30 FED 35 FE 0 1 0 1 0 1 0 1 0 1 BCFED 125 A 80 B 60 CFED 65 C 30 FED 35 FE 15 D 20 F 5 E 10

8 - Her bir sembol için kökten ilgili yaprağa gelene kadar yolda bulunan kodlar birleştirilip kod oluşturulur. Karakter Frekans Bit sayısı Kod A 80 1 B 60 2 10 C 30 3 110 D 20 4 1111 E 5 11101 F 11100

Örnek üzerinde Huffman kodu avantajinin hesaplanmasi : Her bir karakter için eşit uzunlukta kodlama yapalım. 6 karakterimiz olduğuna göre en az 3 bit uzunluğunda bir kodlama yapabiliriz. Örneğin, A için 000, B için 001, C için 010, D için 011, E için 100, F için 101 kodlaması yapılırsa toplam 205.3=615 bit gerekir. Huffman algoritmasına göre A nın kodu 0, B nin kodu 10, C nin kodu 110, D nin kodu 1111, E nin kodu 11101 ve F nin kodu 11100 oldu. Yani A için 1 bit, B için 2 bit, C için 3 bit, D için 4 bit, E iin 5 bit ve F için 5 bit gereklidir. Her karakterin frekansını bit uzunluğu ile çarpıp toplarsak 80.1+60.2+30.3+20.4+10.5+5.5=445 bit yeterli olur.

HUFFMAN KODU İLE KODLANMİŞ METNİN ESKİ HALİNE GETİRİLMESİ Örnek üzerinde şunu görebilirsiniz: Hiçbir karakterin kodu başka bir karakterin ön dizgesi değil, yani örneğin A nın kodu 0 dır ve diğer karakterlerin kodu 0 la başlamamaktadır. Bu da metni eski haline dönüştürme imkanı veriyor.

ÖRNEK; Huffman Kodu ile kodlanmış metin aşağıdaki olsun: “11011101111000” Huffman ağacında kökten başlayarak yapraklara doğru gidelim. Verilen metinde ilk karakter 1 olduğu için sağa git, sıradaki karakter 1 sağa git, sıradaki 0 sola git ve yapağa gelindi. Yani ilk 3 karakter 110 bu yapraktaki karakter C oldu. Tekrar kökten başlayarak aynı işlemleri yap. 1 sağa git, 1 sağa git, 1 sağa git, 0 sola git ve 1 sağa git, yaprak E, tekrar kökten başlayarak, 1 sağa, 1 sağa, 1 sağa, 0 sola, 0 sola, yaprak F oldu. Tekrar kökten başlanırsa 0 sola yaprak A, ayni metin CEFA oldu.