-
Path: news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!
news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.d
e!t-online.de!proxad.net!feeder1-2.proxad.net!74.125.46.134.MISMATCH!postnews.g
oogle.com!j27g2000yqn.googlegroups.com!not-for-mail
From: Mariusz Marszałkowski <m...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: BCB Moj ulubiony kod;)
Date: Thu, 11 Feb 2010 10:56:03 -0800 (PST)
Organization: http://groups.google.com
Lines: 154
Message-ID: <9...@j...googlegroups.com>
References: <hkneu1$1se$1@mx1.internetia.pl>
<d...@1...googlegroups.com>
<e...@z...googlegroups.com>
<9...@1...googlegroups.com>
<6...@r...googlegroups.com>
<1...@1...googlegroups.com>
<f...@w...googlegroups.com>
<1...@b...googlegroups.com>
NNTP-Posting-Host: 89.229.16.190
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1265914563 22422 127.0.0.1 (11 Feb 2010 18:56:03 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Thu, 11 Feb 2010 18:56:03 +0000 (UTC)
Complaints-To: g...@g...com
Injection-Info: j27g2000yqn.googlegroups.com; posting-host=89.229.16.190;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9.1.7)
Gecko/20091221 Firefox/3.5.7,gzip(gfe),gzip(gfe)
Xref: news-archive.icm.edu.pl pl.comp.programming:184793
[ ukryj nagłówki ]On 11 Lut, 18:02, bartekltg <b...@g...com> wrote:
> On 11 Lut, 16:22, Mariusz Marszałkowski <m...@g...com> wrote:
>
> > Dlaczego uwazasz ze to bzdura? Taki algorytm jest
> > tym samym co maszyna turinga. Stan to pozycja glowicy,
> > dane to tasma, pozostale tablice to funkjca przejsc.
>
> Nie widze wlasciwie zadnej mozliwosci praktycznego
> zastosowania takiego algorytmu.
No bez przesady. Zobacz np. drzewa i grafy decyzyjne
wraz z algorytmami do ich automatycznego budowania.
Każdy wezel grafu wyglada w przyblizeniu tak:
Node {
index;
max;
min;
index_true;
index_false;
value_true;
value_false;
stan_true;
stan_false;
response;
};
Mozna zbudowac taki graf w postaci tablicy:
Node graf[MAX_NODE];
I nastepnie zrealizowac kazdy problem decyzyjny w tak
prostej procedurze:
Response( data[SIZE_DATA+EXTENSION] , graf[MAX_NODE] ) {
stan = 0;
for( i = 0 ; i<MAX_LOOP ; i++ ) {
if( data[ graf[stan].index ] >= graf[stan].min AND
data[ graf[stan].index ] <= graf[stan].max ) {
data[ graf[stan].index_true ] = graf[stan].value_true;
stan = graf[stan].stan_true;
} else {
data[ graf[stan].index_false ] = graf[stan].value_false;
stan = graf[stan].stan_false;
}
return graf[stan].response;
}
> Jesli chesz uzywac tego jako narzedzia teoretycznego,
> jak maszyna turinga, to inna sprawa, ale tez bys
> musial pokazac jakies ciekawe wlasciwosci
> (bo jest oczko bardziej skomplikowana niz MT)
To żadna nowość, można tego używać np. jako
grafu decyzyjnego. Nie wiem dlaczego uwazasz ze to
jest skomplikowane, po prostu stany, funkcja przejsc
pomiedzy stanami, warunek stopu i koncowa odpowiedz.
Uwazam ze to jest maksymalnie uproszczone, poniewaz algorytm
budujacy taki graf widzi po prostu tablice liczb i moze
nimi dowolnie manipulowac. Kod wykonania tego grafu
tez jest zabojczo prosty, niespelna 10 linii, a mozna chodzic
po dowolnym grafie.
> > Nie bylo mowy ze w tablice nie wolno wbic pomocniczych
> > rozwiazan, albo dowolnych innych pomocniczych danych.
>
> To w koncu moge tym algorytmem cokolwiek policzyc, czy
> musze znac wynik i wstawic go do tabelki:)
Wystarczy do rubryki "response" wsadzic dwie liczby: zero i jeden,
aby policzyc tym algorytmem dowolne zadanie. Czesciowe
wyniki mozna wstawiac w celu przyspieszenia.
Np. mozesz tym algorytmem policzyc problem komiwojazera.
Na poczatek danych wrzucasz opis grafu ktory ma komiwojazer
przejsc. Po opisie grafu mozna wpisac dwa wierzcholki grafu.
Algorytm zwroci jedynke jesli owe dwa wierzcholki sa z soba
bezposrednio polaczone na najkrotszej drodze laczacej i zero
gdy nie sa. W ten sposob trzeba algorytm wywolac dla kazdej
pary wierzcholkow, aby ustalic najkrotsza droge laczaca wszystkie.
Podobnie z innymi problemami optymalizacyjnymi. Mozna za
danymi umiescic probne rozwiazanie, algorytm zwroci jedynke jesli
rozwiazanie probne jest za male i zero jesli jest za duze. Trzeba
taki algorytm wywolywac iteracyjne (wielomianowa ilosc razy) aby
przyblizyc sie do dokladnego rozwiazania dowolnego problemu.
> Bo na razei to wyglada jak jakies wyszukiwanie
> w przestrzeni rozwiazan. Mamy stan, mamy jakies funkcje
> od stanu, jesli nam nie pasuja (u Ciebie sa za male lub za duze)
> odpowiednio modyfikujemy stan. Na koncu wypisujemy
> odpowiedz (stan lub jakas funkcje stanu).
Modyfikujemy tez dane, nie tylko stan, mamy pamiec,
> Tylko po co w to angazowac tabelki:)
Po to tabelki zeby bylo czytelniej. Dlaczego operowac na
ciagu nienazwanych bitow? Tutaj mamy ladnie wydzielone
tabele zakresow, nowych wartosci, nowych stanow, itd.
> > No wlasnie dlatego to mnie tak bardzo ciekawi, ze znane sa tylko takie
> > kosztowne sposoby. Interesuje mnie jaki jest najlepszy algorytm
> > budowania takich tablic (czyli tak naprawde algorytm budowania
> > innego algorytmu), o ograniczonych rozmiarach ktore dla dla
> > wszystkich danych uczacych wypluja wlasciwe rozwiazanie.
>
> Jesli dobrze wylapuje idee, chcesz znalesc tak tabelkowy algorytm
> dla danego problemu i pozniej te probmely w ten sposob rozwiazywac.
> W ogolnosci bedziesz mial z tym problem.
No jest z tym ogromny problem. Mnie nie tylko interesuje taki
tabelkowy
algorytm, ale raczej algorytm do budowania takich tabelkowych
algorytmow
na podstawie danych doswiadczalnych. Do tego chcialbym zeby zbudowane
algorytmy byly optymalne w sensie rozmiaru, szybkosci, dokladnosci.
> Pomysl, jak 'tabelkowo' znalesc najkrotsza droge w grafie (+z wagami).
> Czasem sie da. Znajdz tym algorytmem chocby wysokosc drzewa
> (to sie da dosc bezposrtednio, tylko po co).
No jak trzeba znalezc najkrotsza droge w grafie, to lepiej kola nie
wymyslac. Ale wielu innych algorytmow nie znamy.
> > Sa ciekawsze przypadki. Np. mamy gre kolko i krzyzyk. Algorytm
> > dostaje pary uczace w postaci opisu sytuacji w grze i najlepszego
> > ruchu. Czyli
> > tablica z danymi to bedzie:
> > int plansza[9+rozszerzenie]
> > tablica z odpowiedziami to bedzie numer pola z optymalnym ruchem
> > int response[9] = {1,2,3...9}
> > I algorytm genetyczny musialby dobrac parametry w pozostalych
> > tablicach
> > tak, aby w najmniejszej ilosci krokow zawsze podac optymalny ruch.
>
> Stabelaryzowales gre. Super, ale to juz bylo. A tabelke lepiej
> wypelnic zwyklym przeszukiwaniem drzewa gry.
A jak gra jest tak duza jak np. GO na planszy 19x19? Wtedy
potrzeba heurystyk ktore w miare mozliwosci szybko dzialaja i
dobrze uogolniaja.
> Algorytmy genetyczne, sieci neuronowe i inne wynalazki
> nie sa uniwersalna metoda rozwiazywanie wszytkiego.
> Raczej ostatnia deska ratunku dla pewnej klasy zadan,
> zeby znalesc rozwiazanie nieco lepsze niz losowe.
> Ale jakis czas kazdy sie nimi zachwyca:-)
Moze to kwestia mocy obliczeniowej? Teoretycznie na
super-komputerze mozna stablicowac rozwiazania jakiegos
ogromnego problemu NP-trudnego, nastepnie zasymulowac
wszystkie algorytmy na tych danych i wybrac tylko te ktore
zakonczyly sie przed zadanym czasem i daly poprawne
odpowiedzi na wszystkich danych. Moze w przyszlosci
wlasnie takie symulacje pomoga znalezc kontrprzykad
na to ze NP != P. Wlasciwie to juz dzis sie tak robi, ale
dzis dysponumemy moca obliczeniowa do sprawdzenia
zaledwie jakis wybranych parametrow w programie.
> pozdrawiam
rowniez pozdrawiam
Następne wpisy z tego wątku
- 11.02.10 19:12 Przemyslaw Osmanski
- 11.02.10 22:05 Bastion
- 11.02.10 22:29 Bastion
- 11.02.10 22:33 Bastion
- 11.02.10 22:53 Bastion
- 11.02.10 23:05 bartekltg
- 11.02.10 23:07 Wojciech \"Spook\" Sura
- 12.02.10 08:22 Artur M. Piwko
- 12.02.10 16:52 Jędrzej Dudkiewicz
- 12.02.10 20:57 Bastion
- 12.02.10 21:06 Bastion
- 12.02.10 21:10 Wojciech \"Spook\" Sura
- 13.02.10 06:04 Jacek Czerwinski
- 13.02.10 20:12 Bastion
- 13.02.10 20:25 Bastion
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-25 Karty przedpłacone (podarunkowe) Google Play - pytanie do korzystających
- 2024-11-26 wina Tóska
- 2024-11-26 Rewolucja/Rewelacja!
- 2024-11-25 grupa ożyła ;)
- 2024-11-24 Być jak Clint
- 2024-11-24 Rura kanalizacja konceptu Franke = problem
- 2024-11-25 Wrocław => Lead Java EE Developer <=
- 2024-11-25 Warszawa => Business Development Manager - Network and Network Securit
- 2024-11-25 Kraków => Programista Full Stack (.Net Core) <=
- 2024-11-25 Lublin => Senior PHP Developer <=
- 2024-11-25 Karlino => Konsultant wewnętrzny SAP (FI/CO) <=
- 2024-11-25 Warszawa => ECM Specialist / Consultant <=
- 2024-11-25 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-11-25 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-25 Lublin => Inżynier Serwisu Sprzętu Medycznego <=