Çanakkale Gezisi

Hafta sonunu Çanakkale'de geçirdim. Şehri beğendim. Tam bir öğrenci şehri. İzmir'den sonra şehir içinde her yere yürüyerek gitmek tam bir güzellik. Sevdim. Söylenecek en önemli şey mutlaka görülmesi gerektiği. Şehrin her yeri zaten Milli Park. Yeşil ve mavi'nin çok güzel buluştuğu bir yer.

Aşağıda çekmiş olduğum resimlerden (400 civarı resim çektim :) ) seçtiğim 5 tanesini görebilirsiniz:



Kısayol tuşları

Web tarayıcıma adres girerken kısayol olarak Ctrl+Enter tuşlarını kullanıp www. ve .com kelimelerini yazma zahmetinden kurtuluyordum. Bugün yanlışlıkla Ctrl+Shift+Enter tuşlarına bastım, www. ve .org olarak geldi site; bunu görünce Shift+Enter ne yapıyor diye baktım; www. ve .net ekliyormuş.

Tarayıcının adres çubuğuna "google" yazıp
Ctrl+Enter yapın: www.google.com
Shift+Enter yapın: www.google.net
Ctrl+Shift+Enter yapın: www.google.org gelecektir.

Böl ve İşgal Et (Divide & Conquer)

Başlık sizi şaşırtmasın. Siyasetten falan bahsetmeyeceğim. Bu yazıda bir başka algoritma tasarım tekniği olan böl ve işgal et tekniğinden bahsedeceğim.

Bilgisayar bilimlerinde böl ve işgal et (D&C) önemli bir algoritma tasarım tekniğidir. Bir problemin iki veya daha fazla benzer alt probleme parçalanarak özyinelemeli olarak çözülmesine dayanmaktadır. Daha sonra bu alt problemlerin çözümleri arasından çözüm seçilir. Arama (Mergesort, Quicksort), "Discrete Fourier Transforms" (FFTs) dahil olmak üzere bir çok algoritma bu yöntemi kullanmaktadır.

D&C algoritmaları özyinelemeli yordamlar şeklinde gerçekleştirilmektedir. Dilerseniz sonuçların bir veri tipinde saklandığı özyinelemeli olmayan şekilde de kullanabilirsiniz.

Örnek vererek ne olduğunu anlatmaya çalışayım.

Problemimiz bir dizi içerisindeki en büyük sayıyı bulmak. Bunu aşağıdaki çok kolay algoritma yardımıyla tek geçişte bulabilirsiniz, evet ama anlaşılması için basit bir örnek veriyorum.

private static void normalMAX(double[] dizi) {
double max = dizi[0];
for (int i = 0; i < dizi.length; i++) {
if (dizi[i] > max)
max = dizi[i];
}
System.out.println("MAX:" + max);
}


Aşağıdaki kod parçasında ise bu problemin D&C yöntemi kullanılarak hazırlanmış çözüm algoritmasını görmektesiniz:
private static void dcMAX(double[] dizi) {
System.out.println("MAX:"+max(dizi,0,dizi.length/2));
}

private static double max(double a[], int l, int r) {
if (l == r)
return a[l];
int m = (l + r) / 2;
double u = max(a, l, m);
double v = max(a, m + 1, r);
if (u > v)
return u;
else
return v;
}

Bu şekilde çözdüğünüz zaman mesela 100000 elemanlık bir dizi için 1 milisaniye kazancınız oluyor :)

Bir başka kullanıldığı alan Hanoi kulelerinin çözüm algoritmasıdır. Bunu nasıl yapıyor derseniz problemi alt problemlere bölerek çözerek yapıyor :)

D&C yöntemi zor problemlerin çözülmesinde verimli algoritmalar bulunmasında çok kullanılmaktadır. Problemi alt parçalara ayırarak paralelliği de desteklemektedir.

En önemli dezavantajı özyinelemeden kaynaklanan yavaşlıktır. Tekrar eden altyordam çağrıları yeterince büyük olmayan çağrı yığıtlarında problemler yaratabilmektedir. Bir başka dezavantajı parçalara bölerek çözmenin, işlemlerin karmaşıklaşmasına neden olmasıdır.

Bazı problemler için, çoğu alt problemin sonucu aynı olabilmektedir. Bu durumda çözümlerin tekrar tekrar kullanılması önem kazanmaktadır. Bu yönteme memoization adı verilmektedir. Dinamik programlamanın özyinelemeli türüdür.


Bağlantılar:

http://en.wikipedia.org/wiki/Divide_and_conquer_algorithm
http://www.csc.liv.ac.uk/~ped/teachadmin/algor/d_and_c.html
http://en.wikipedia.org/wiki/Memoization
http://members.comu.edu.tr/kadayif/algoritmaanalizi/algoritmaanalizi.htm

Coca Cola İle Eller Havaya

Son zamanlarda televizyonlarda karşımıza sıkça çıkan bir Coca Cola reklamı var. Bir haftalık aşkına hemen seni seviyorum diyen kız, eller havaya! İşe öğlen başlamak isteyenler, eller havaya! Saçının döküldüğünü gizlemek için sürekli kazıtan adam, eller havaya(özellikle bu kısım canımı sıkıyor :)) vs... Sonunda da Coca Cola light içip asla içmem diyenler eller havaya şeklinde bağlıyorlar reklamı.

Öncelikle Coca Cola'nın bütün reklamlarında belirttiği ana reklam sloganı hakkında bir şeyler söylemek istiyorum: Hayatın Tadı!... Bu kadar iddialı bir slogan olabilir mi ya? Bütün dünyadaki milyonlarca tat arasından kendi tadını nasıl hayatın ortak bir tadı olarak belirleyebilirsin? Fırsatım olsa sormak isterdim Coca Cola yetkililerine sen hiç çocukken köy ekmeğine ev salçası sürüp üstüne biber ekleyip yedin mi? Terleme nedir bilir misin? Ya da boğazından bir damla yayık ayranı geçti mi diye... Bana kalırsa bu iddialı sloganları da bütün dünyayı Amerika sanmalarından kaynaklanıyor gibi.

Yukarda ilk belirttiğim reklama dönecek olursak, bu reklamı son izlediğimde kafamda farklı bir reklam oluştu, sizlerle paylaşayım dedim:

İlk kurulduğu günlerde "Çocuk emeği dünya üzerindeki bütün ülkelerde başarının ölçüsüdür" diyen patronları(Asa Chandler) sayesinde çocukları köleler gibi çalıştıranlar, eller havaya!

1970'lerde Guetamala'da ve Kolombiya'da kendi çalışanları arasındaki sendikacıların üzerine kiralık katilleri ve işkencecileri salanlar, eller havaya!

Yine 1970'lerde Güney Afrika'da ırkçı rejimin hapse attığı siyah mahkumları ayda 7,5 dolara çalıştıranlar, eller havaya!

2000 Yılındaki Amerikan seçimlerinde George W. Bush'un seçim kampanyasına 1 milyon dolar bağış yapanlar, eller havaya!

Günümüzde, Dudullu'daki fabrikasından sendikaya üye oldukları için 103 işçiyi işten çıkaranlar, eller havaya!

Bağlantılar:
http://www.bianet.org/2004/02/23/26216.htm
http://www.barisarock.org/haber.php?haber_id=22

Exif

Exif sayısal fotoğraf makineleri tarafından kullanılan bir resim bilgisi saklama belirtimidir. Exif ile tanışmam fotoğrafçılığa meraklı bir arkadaşımın yeni aldığım ikinci el makinede daha önce kaç poz çekilmiş olduğunu sorması ve devam eden sohbet sonrasında oldu. Sayısal makinelerde jpg içerisine birçok bilgi saklanıyor. Bu bilgileri okumak için ise özel yazılımlar gerekiyor.

Hemen araştırma yaptım, neyin nesiymiş bu diye. ExifTool yazılımını indirip kurduktan sonra ilk çektiğim RAW resmin özelliklerini inceledim. Shutter count resim sayısı bilgisini tutan bir başlık sahası (Fotoğrafla ilgili bir çok bilgi saklanıyor). Bu saha sayesinde daha önce 1420 kere "shutter"'a basıldığını anladım. :) Eğer fotoğrafçılık ilginizi çekiyorsa mutlaka Exif konusunu biliyorsunuzdur. Bilmeyenler için bağlantıları vermektir tek amacım :D

Bağlantılar:
http://en.wikipedia.org/wiki/Exif
http://netzreport.googlepages.com/hidden_data_in_jpeg_files.html
http://www.exif.org/

Not: Bu yazıyla birlikte yeni bir etiketi de günlüğe eklemiş oluyoruz :)