-
221. Data: 2012-10-16 20:39:52
Temat: Re: sortowanie
Od: notb <P...@n...com>
On 2012-10-16, Baranosiu <r...@w...pl> wrote:
> Dla zbiorów dyskretnych (a ściślej dla dyskretnych ich reprezentacji w
> maszynie) to jak najbardziej algorytm zadziała, ale nie wszystkie
> zbiory są przeliczalne (a więc nie zawsze dają się posortować) i... z
Ależ przeliczalność w ogóle nie jest konieczna (liczby rzeczywiste
sortują się naprawdę dobrze - polecam sprawdzić :)).
Aby sortowanie miało sens (teoretyczny) musi istnieć jakaś metoda
porównywania, czyli na zbiorze musi istnieć jakiś porządek liniowy.
> Wszystkie współczesne komputery cyfrowe (łącznie z kwantowymi) to
> maszyny Turinga, więc rozróżnienia się nie robi, w tym sensie można
> pominąć szczegóły maszyny, ale samo pojęcie algorytmu to coś więcej
> niż "proces wykonywany przez maszynę cyfrową".
Z tym "wszystkie komputery cyfrowe to maszyny Turinga" to taki trochę
niepewny tekst (zależy co by nazwać komputerem).
Za to nie wszystkie języki programowania są zupełne (kompletne
w sensie Turinga).
pozdrawiam,
PK
-
222. Data: 2012-10-16 20:47:26
Temat: Re: sortowanie
Od: "M.M." <m...@g...com>
W dniu wtorek, 16 października 2012 20:39:53 UTC+2 użytkownik notb napisał:
> Aby sortowanie miało sens (teoretyczny) musi istnieć jakaś metoda
> porównywania, czyli na zbiorze musi istnieć jakiś porządek liniowy.
No wlasnie jak to bylo? Na pewno nie wystarczy ze istnieje metoda
porownywania. Typowy przyklad z programow szachowych: program A
wygrywa z programem B, B wygrywa z C, a C wygrywa z A - da sie
porownac, ale jak to sensownie posortowac (bez dodatkowych
zabiegow)?
Chyba na zbiorze musi byc okreslona jakas relacja...
to byla relacja czesciowego porzadku?
Pozdrawiam
-
223. Data: 2012-10-16 20:54:23
Temat: Re: sortowanie
Od: notb <P...@n...com>
On 2012-10-15, slawek <h...@s...pl> wrote:
>>pełno jest cudownych "odkryć" wynikających z tego, że poważny
>>naukowiec pisał w C++ i użył rand() niczym 14-latek na sprawdzianie).
>
> Cudownych odkryć jest wiele i bez rand().
To co napisałem wyżej, to implikacja. W tym kontekście Twoje
zdanie to taki trochę "banał" (nie jest to termin matematyczny:)).
> a. dlaczego rand() jest tak beznadziejne (czy zaszkodziłoby dać naprawdę
> dobry generator jako rand() ?;
Bo generator kongruentny wprowadzono do STL w czasach, kiedy procesory
były o rzędy wielkości wolniejsze niż dziś. I potem trzymano go dość
długo, ponieważ C++ jest językiem konserwatywnym i specyficznym. W C++11
nastąpiła rewolucja na większości frontów i dotknęło to także RNG, ale
stary rand() też zostaje, bo jest po prostu szybki jak cholera.
> b. czy istnieją liczby losowe jako takie (i los jako taki, predestynacja,
> wolna wola i takie tam) ?
Matematyka nie zajmuje się filozofią.
Z punktu widzenia fizyki teoretycznej losowość istnieje. Fizyce
eksperymentalnej nie udało się tego podważyć.
pozdrawiam,
PK
-
224. Data: 2012-10-16 20:54:59
Temat: Re: sortowanie
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2012-10-16, M.M. <m...@g...com> wrote:
> W dniu wtorek, 16 października 2012 20:39:53 UTC+2 użytkownik notb napisał:
>> Aby sortowanie miało sens (teoretyczny) musi istnieć jakaś metoda
>> porównywania, czyli na zbiorze musi istnieć jakiś porządek liniowy.
>
> No wlasnie jak to bylo? Na pewno nie wystarczy ze istnieje metoda
> porownywania. Typowy przyklad z programow szachowych: program A
> wygrywa z programem B, B wygrywa z C, a C wygrywa z A - da sie
> porownac, ale jak to sensownie posortowac (bez dodatkowych
> zabiegow)?
A kto ci nakłamał, że taka relacja to relacja częściowego porządku,
a tym bardziej porządku liniowego?
--
Secunia non olet.
Stanislaw Klekot
-
225. Data: 2012-10-16 21:13:56
Temat: Re: sortowanie
Od: bartekltg <b...@g...com>
W dniu 2012-10-16 20:47, M.M. pisze:
> W dniu wtorek, 16 października 2012 20:39:53 UTC+2 użytkownik notb napisał:
>> Aby sortowanie miało sens (teoretyczny) musi istnieć jakaś metoda
>> porównywania, czyli na zbiorze musi istnieć jakiś porządek liniowy.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> No wlasnie jak to bylo? Na pewno nie wystarczy ze istnieje metoda
> porownywania. Typowy przyklad z programow szachowych: program A
> wygrywa z programem B, B wygrywa z C, a C wygrywa z A - da sie
> porownac, ale jak to sensownie posortowac (bez dodatkowych
> zabiegow)?
Przy programach walczączych nie tylko mozę nie być porządku
częściowego, ale nawet wynik porównania możę być
niedeterministyczny;)
> Chyba na zbiorze musi byc okreslona jakas relacja...
> to byla relacja czesciowego porzadku?
Liniowego. Przecież nobt napisał to ;)
pzdr
bartekltg
-
226. Data: 2012-10-16 21:18:47
Temat: Re: sortowanie
Od: bartekltg <b...@g...com>
W dniu 2012-10-16 20:54, notb pisze:
>
> Bo generator kongruentny wprowadzono do STL w czasach, kiedy procesory
> były o rzędy wielkości wolniejsze niż dziś. I potem trzymano go dość
> długo, ponieważ C++ jest językiem konserwatywnym i specyficznym. W C++11
> nastąpiła rewolucja na większości frontów i dotknęło to także RNG, ale
> stary rand() też zostaje, bo jest po prostu szybki jak cholera.
http://www.cplusplus.com/reference/std/random/
Bardzo się z tego cieszę;)
A co do szybkości rand - nieraz do 'pierdółek'
przydałby się szybszy:)
pzdr
bartekltg
-
227. Data: 2012-10-16 21:19:16
Temat: Re: sortowanie
Od: "slawek" <h...@s...pl>
Użytkownik "notb" napisał w wiadomości grup
dyskusyjnych:s...@n...notb-home.
..
>A skąd ta konieczność rozrywki w grze? Gra to taki model matematyczny
>z uczestnikami podejmującymi decyzje. Zajmuje się tym teoria
>gier (głównie związana z ekonomią).
Lubisz grać w gry które cię nie bawią? Może jakieś historie z dzieciństwa
nam opowiesz?
Treść zadania jednoznacznie określała, że to rozrywka. Ale jak łatwo
zauważyć: nudna - bardziej niż krykiet flamingami.
--- news://freenews.netfront.net/ - complaints: n...@n...net ---
-
228. Data: 2012-10-16 21:26:26
Temat: Re: sortowanie
Od: "slawek" <h...@s...pl>
Użytkownik "notb" napisał w wiadomości grup
dyskusyjnych:s...@n...notb-home.
..
>Kod Windowsa jest akurat AFAIK pisany dosyć dobrze i ładnie, bo ktoś
Kod MS Windows BYŁ dość ładny. Ale jaki jest teraz? Pewnie też względnie
przyzwoity. Podobnie /dobre/ programy dla Linuksa itd.
Tym bardziej dziwi, że newbie myślą iż przez syfiaste pisanie byle czego
załapią się na światową czołówkę.
>tak źle pisane publiczne programy. Zdarzają się przypadki, że jednego
>dnia pojawiają się 2 aktualizacje. Czyli autor nawet nie przetestował
>tego, co napisał i udostępnił.
Nie łapię twojej logiki. Ale cóż, nie każdego trolla da się zrozumieć.
(BTW, MS wszystko testuje i co? Średnio co 2 dni jest nowy "niezbędny" patch
per system.)
--- news://freenews.netfront.net/ - complaints: n...@n...net ---
-
229. Data: 2012-10-16 21:37:14
Temat: Re: sortowanie
Od: "slawek" <h...@s...pl>
Użytkownik "notb" napisał w wiadomości grup
dyskusyjnych:s...@n...notb-home.
..
>stary rand() też zostaje, bo jest po prostu szybki jak cholera.
Komu jest potrzebny szybki zły generator?
Pytanie nie wymaga odpowiedzi, podobnie jak: "kto lubi zegarki Pobieda?"
--- news://freenews.netfront.net/ - complaints: n...@n...net ---
-
230. Data: 2012-10-16 21:41:55
Temat: Re: sortowanie
Od: Baranosiu <r...@w...pl>
Dnia 16.10.2012 notb <P...@n...com> napisał/a:
> On 2012-10-16, Baranosiu <r...@w...pl> wrote:
>> Dla zbiorów dyskretnych (a ściślej dla dyskretnych ich reprezentacji w
>> maszynie) to jak najbardziej algorytm zadziała, ale nie wszystkie
>> zbiory są przeliczalne (a więc nie zawsze dają się posortować) i... z
>
> Ależ przeliczalność w ogóle nie jest konieczna (liczby rzeczywiste
> sortują się naprawdę dobrze - polecam sprawdzić :)).
Może i głupi jestem, ale posortuj mi zbiór (0,1) /* odcinek otwarty
liczb rzeczywistych od zera do jedynki */ od największego do
najmniejszego :D Można oczywiście ustanowić relację porządku, ale to
jeszcze nie sortuje zbioru (nie ustawia elementów w ciąg zgodnie z
relacją porządku :D). Wiem że podzbiory zbioru liczb rzeczywistych
świetnie się sortują... jeśli są skończone bądź dyskretne :D
> Aby sortowanie miało sens (teoretyczny) musi istnieć jakaś metoda
> porównywania, czyli na zbiorze musi istnieć jakiś porządek liniowy.
To jest warunek konieczny, ale nie wystarczający, zbiór musi być
jeszcze przeliczalny. Zbioru liczb rzeczywistych (bądź dowolnego
wypukłego jego podzbioru) nie da się ustawić w liniowy porządek (ale
już liczby wymierne się da, a że w komputerach liczby rzeczywiste
przybliżamy wymiernymi, to "w praktyce" to działa :D).
>
>> Wszystkie współczesne komputery cyfrowe (łącznie z kwantowymi) to
>> maszyny Turinga, więc rozróżnienia się nie robi, w tym sensie można
>> pominąć szczegóły maszyny, ale samo pojęcie algorytmu to coś więcej
>> niż "proces wykonywany przez maszynę cyfrową".
>
> Z tym "wszystkie komputery cyfrowe to maszyny Turinga" to taki trochę
> niepewny tekst (zależy co by nazwać komputerem).
Ok, zbyt ogólnie to napisałem, biję się w piersi :D
> Za to nie wszystkie języki programowania są zupełne (kompletne
> w sensie Turinga).
Można wręcz powiedzieć, że wszystkie implementacje języków
programowania nie są kompletne w sensie Turinga, bo nie ma czegoś
takiego jak nieograniczona pamięć (no może poza implementacjami na
komputery kwantowe, ale te dla odmiany nie są deterministyczne :D).
Algorytm w sensie matematycznym to tylko model, na tej samej zasadzie
jak mapa to nie to samo co terytorium, mapa pozwala poruszać się po
terenie i zawiera elementy przydatne z punktu widzenia jej
użytkownika, mapa sporządzona dla geologa może być zupełnie
nieprzydatna dla kierowcy samochodu czy dla wojska, teren jest jeden,
a map wiele i nie ma się co spierać nad wyższością jednej nad drugą (a
uniwersalnej mapy zadowalającej wszystkich możliwych użytkowników po
prostu nie ma :D).
Teoria teorią, a praktyka praktyką, dla początkującego adepta
informatyki chyba równie ważne (jeśli nie ważniejsze) jest także
intuicyjne rozumienie pojęcia algorytmu, w ten sposób może dobrać
odpowiedni model teoretyczny (mapę) do rozpatrywanego zagadnienia, a
modeli teoretycznych jest wiele i nie ma jednej "ogólnej teorii
wszystkiego" (teza Godla ;)).