FIRAT ÜNİVERSİTESİ
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ PowerPoint PPT Presentation


  • 238 Views
  • Uploaded on
  • Presentation posted in: General

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ. KONU : KNAPSACK PROBLEMİNİN ANALİZİ, NESNE TABANLI PROGRAMLAMAYA GİRİŞ. DERLEYENLER: Ahmet Can ÇAKIL Ali Murat GARİPCAN Özgür AYDIN Şahin KARA. KONTROL : Prof. Dr. Asaf VAROL. Sırt Çantası Problemi (Knapsack Problem)

Download Presentation

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Firat niversitesi teknoloji fak ltesi

FIRAT ÜNİVERSİTESİ

TEKNOLOJİ FAKÜLTESİ

KONU : KNAPSACK PROBLEMİNİN ANALİZİ, NESNE TABANLI

PROGRAMLAMAYA GİRİŞ

DERLEYENLER:

Ahmet Can ÇAKIL

Ali Murat GARİPCAN

Özgür AYDIN

Şahin KARA

KONTROL : Prof. Dr. Asaf VAROL


Firat niversitesi teknoloji fak ltesi

Sırt Çantası Problemi (Knapsack Problem)

Sırt çantası problemi ( Knapsack Problem- SÇP) tam sayılı programlamada en çok uğraşılan problemlerden birisidir.

1950 yılından beri bu türde problemlerin artması sonucu bilgisayar teknolojisi ile çözüm aranan ve çözüm sürelerinin iyileştirmeye çalışılan problemdir.

Bilgisayar kullanımı ile birlikte karşılaşılan problemlerin bir çoğu çözüme ulaşmıştır. Bu tip problemleri incelersek en önemlisinin çözüm sürelerinde görülen uzamalardır.


Firat niversitesi teknoloji fak ltesi

Torba problemi basitçe bir torbanın içerisine en fazla eşyanın yerleştirilmesini hedefler. Problem hırsız örneğinden daha iyi anlaşılabilir.

Buna göre bir hırsız çantasına ağırlıkça en az, pahaca en çok eşyayı doldurmak ister.

Bu durumda her eşyanın ;

Pahası; piAğırlığı; ai

Çantanın taşıyabileceği azamî kapasite; ci

olarak tanımlansın.


Firat niversitesi teknoloji fak ltesi

0-1 Torba problemi

Bu problem tipinde eşyalar ya tamamen alınır ya da tamamen bırakılır. Alınacak olan eşyanın bir kısmını almak mümkün değildir. Dolayısıyla bir eşyanın alınıp alınmamasını xi ile gösterecek olursak problem aşağıdaki şekilde modellenebilir:

Bu modelde görüldüğü üzere, xi değeri, 0 veya 1 olabilmektedir.

0 olması durumunda i elemanından alınmıyor, 1 olduğunda ise i elemanının tamamı alınıyor demektir.


Firat niversitesi teknoloji fak ltesi

Örnek:

Şimdi elimizdeki 1 Kg kapasiteli bir torbaya yukarıdaki eşyaları en fazla para edecek şekilde yerleştirelim.

Bu durumda ci=1kg olarak tanımlamış oluyoruz.


Firat niversitesi teknoloji fak ltesi

Örnek Çözümler;

i = { 1,2,4} 100+300+500=900 TL

i = { 1,3,5} 100+700+10=810 TL

i = { 3,4} 700+500=1200 TL

Çözümde ise i = { 3,4} kümesi alınıyor. Yani kamera ve cep telefonunu aldığımızda 1200 TL ile en pahalı ve torbamıza sığan kümeyi almış oluyoruz.


Firat niversitesi teknoloji fak ltesi

Sınırlı Torba Problemi (Bounded Knapsack Problem)

Bu problem tipinde ise her eşyadan alınabilecek miktarda sınır vardır.

Bu problemin modeli aşağıda verilmiştir:

bi=Üründen alınabilecek maksimum miktar


Firat niversitesi teknoloji fak ltesi

Örnek:

Şeklinde verilen ürünlerden 10kg’lık bir fileye en pahalı nasıl bir seçim yapılmalıdır sorusu sorulabilir.


Python programlama d l

PYTHON PROGRAMLAMA DİLİ

Bu durumda her üründen değişik miktarlarda var. Örneğin en fazla 4kg elma alabiliyoruz bu değer modelimizdeki bi ile gösterilen ve bir üründen en fazla alınabilen değerdir.

Toplamda en fazla alabileceğimiz değer ise hala ci‘dir. Bu problem tipinde her üründen alınan miktar ise değişmektedir ve bu miktar xi ile gösterilir.

Örneğin yukarıdaki problemin çözümünde

1kg portakal fileye konulacaksa, bu durumda

x4 = 1, b4 = 5 , p4 = 3.5 olarak alınmalıdır.


Firat niversitesi teknoloji fak ltesi

Nesne Tabanlı Programlama (NTP)

(Object Oriented Programming)

Temelde NTP belirli bir problemin çözüm adımlarını parçalara bölerek bunları objeler haline dönüştürmektir. Buradaki temel amaç ileriki zamanlarda aynı problem ile karşılaşıldığında bu objelerin kullanılması.

Tabii çözümü bir bütün olarak değil de bir parçalar olarak ele alındığından dolayı müdahalesi ve değişimi de daha hızlı olmaktadır.

Nesne Tabanlı Programlama dillerinden ;

Simula, Smalltalk, C++, Object Pascal, Objective-C, Eiffel, Python, Java, C Sharp programlama dili, Visual Basic .NET ve REALbasic'i sayabiliriz.


Python programlama d l1

PYTHON PROGRAMLAMA DİLİ

Nesne Tabanlı Programlama

Örnek vermemiz gerekirse ;

Mesela bir araba üreticisinin yeni bir araba serisi üretmek istediğini düşünün. Bu araba serisinin belirli özellikleri olduğu gibi birbirinden farklı özellikleri de olacaktır.

Yapılacak araba serisi: A10, A11, A12 diye adlandırıldığını farz edelim.

Her üç araba serisi içinde klima, merkezi kilit, müzik sistemi olacaktır. A11 serisinde ekstra olarak yol bilgisayarı, yağmur sensörü olacaktır. A12 serisinde ise yol bilgisayarı, yağmur sensörü, hava yastığı, sesli kontrol sistemi yer alıyor.


Firat niversitesi teknoloji fak ltesi

Nesne Tabanlı Programlama

Her üç araba serisi içinde kullanılan ortak materyaller klima, merkezi kilit, müzik sistemi, camlar, kapılar, farlar, direksiyon, vb materyallerdir. Firma bu materyallerin tasarımı ve üretimini bir sefer yapmaktadır. Ama aynı materyalleri üç farklı araba serisinde kullanmaktadır.

NTP’daki ana mantık da budur. Problemimiz araba yapmaktır, problemin çözümü için gerekli olan yol belirlenir. Daha sonra bu çözüm yolu parçalara bölünür.

Bütün parçalar birer objedir. Ve objeler birleşimi problemin çözümüdür.


Firat niversitesi teknoloji fak ltesi

Nesne Tabanlı Programlamanın Ortaya Çıkışı ve Faydaları

NTP aslında bir mecburiyetten ortaya çıkmıştır. NTP nın en büyük avantajı büyük çaplı projelerdeki zaman ve para kaybını önlemesidir.

1960 ların sonuna doğru programların git gide büyümesi ve programlardaki değişikliklerin çok uzun zaman alması ve maliyetinin yüksek olması ile ortaya çıkmış bir programlama yaklaşımıdır.

Prosedürel Programlama (sınıf yapısı olmadan) ile kodlanan yazılımlardaki değişiklikler çok uzun zaman alır.

Mesela değiştirmek istediğiniz bir işlev için binlerce satır kod arasına girip saatlerce belki günlerce uğraşmanız gerekmektedir. NTP da ise bu mantık farklıdır. Değiştirmek istediğiniz işlevi sınıf yapısı içerisinde değiştirip hemen güncelleyebilirsiniz. Bu hem kodların daha derli toplu olmasını sağlar. Hem yapılacak olan değişiklikler için zaman kaybı olmaz ve maliyeti düşürür. Ayrıca yazılan sınıf yapılarını tekrar tekrar kullanabilirsiniz. Yani bir proje içerisinde yer alan sınıf yapısını farklı bir projede kullanabilirsiniz.


Firat niversitesi teknoloji fak ltesi

Nesne Tabanlı Programlamanın Kullanımı

NTP kullanmadaki temel amaç iş gücünü düşürtmek ve aynı işlemleri tekrar tekrar yapmamaktır. Diyelim ki sıklıkla kullandığınız bir animasyonun temel işlevlerini bir sınıf haline dönüştürmek istiyorsunuz. Böylece her seferinde aynı kodları yazmak zorunda kalmadan sorununuzu çözmüş olursunuz.

Ancak sırf şaşalı olsun diye de her zaman sınıf yapılarını kullanmak mantıklı değildir. Yani sadece bir sefer yapacağınız bir işlem için oturup sınıflar yazmanızın bir anlamı yoktur. Çünkü işlemi sadece bir sefer yapıyorsunuzdur.


Firat niversitesi teknoloji fak ltesi

Sonuç Olarak;

Nesne Yönelimli Programlama (Object Oriented Programming) önce ne yapacağınıza karar veririsiniz sonra bunları oluşturmaya başlarsınız.

Her bir parça ayrı ayrı sınıf (class) yapılarından oluşur. Bu yapılara istediğiniz zaman müdahale edebilir istediğiniz zaman değiştirebilirsiniz. Tabii bu yapıları farklı projeler için kullanabilirsiniz.

Buradaki ana mantık bir sefer oluşturduğunuz sınıfı farklı projelerde kullanabilmenizdir. Tabii zaman ve maliyette düşmektedir.


Kaynaklar

KAYNAKLAR

  • MIT Üniversitesinin ders notları

    http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/lecture-videos/

    http://www.python.org/

    http://www.cyber-warrior.org/FORum/display_topic_threads.asp?ForumID=124&TopicID=394638&light=1&ThreadPage=1

    http://www.istihza.com


  • Login