-
Data: 2015-03-31 14:48:32
Temat: Re: poprawność algorytmu
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Tuesday, March 31, 2015 at 12:20:29 PM UTC+2, g...@g...com wrote:
> W dniu sobota, 28 marca 2015 10:54:16 UTC+1 użytkownik M.M. napisał:
> > > >
> > > > Mój (hipotetyczny) klient zamawia najlepszy program do gry w
> > > > szachy o łącznym rozmiarze kodu i danych nie większym niż 1MB. Napisałem
> > > > taki program. Jak mam przeprowadzić dowód, że nie istnieje w
> > > > ramach tego rozmiaru lepszy program?
> > >
> > > To akurat nie jest problem metody dowodowej,
> > Właśnie, tego nie da się udowodnić, a jest to też ważny aspekt
> > programu. A w testach tak się robi, porównuje się kilka
> > różnych algorytmów dla różnych danych.
>
> To, że "nie istnieje w ramach określonego rozmiaru >>lepszy<< program"
> jest "ważnym aspektem programu"? Dla kogo jest to ważne?
Uprościłem pewien aspekt złożoności do 'rozmiaru' - miałem bardzo
podobną sytuację w praktyce. Ale ok, nie ciągnijmy.
> Klienta interesuje, żeby program działał zadowalająco dobrze, a nie to, żeby
> "w ramach określonego rozmiaru programu nie istniał jakiś lepszy".
Nie zgodzę się, klient może chcieć aby program działał jak najlepiej
to możliwe - w ramach jakiś ograniczeń.
> (W każdym razie ja nie spotkałem nigdy klienta o tak osobliwych
> zainteresowaniach. Ale nawet gdybym spotkał, pewnie po prostu nie
> uwierzyłbym własnym uszom)
Dlaczego byś nie uwierzył? Program wspomaga decyzje. Od decyzji zależy
(w jakimś stopniu) generowanie zysków. Co w tym dziwnego, że chcemy
aby taki program działał jak najlepiej.
Inny przykład, program do translacji języków naturalnych. Dlaczego
chciałbyś używać gorszy program niż lepszy?
Następny problem: gra w szachy. Dlaczego używać słabszego programu niż
silniejszego? Można mnożyć...
> Nie widzę też, w jaki sposób testy miałyby tu być pomocne.
Bierzesz wiele danych wejściowych, porównujesz jakość odpowiedzi i
oceniasz. A jak na podstawie kodu udowodnić, że jeden program lepiej
translatuje, albo lepiej gra w szachy, od drugiego?
>
> > > tylko nieprecyzyjnej
> > > specyfikacji. Co to znaczy,że "w ramach określonego rozmiaru program
> > > jest lepszy od innego programu"?
> > Zakładamy że specyfikacja jest dobra. To jest kwestia jakości
> > użytych algorytmów/heurystyk.
>
> To, co piszesz, nic nie wyjaśnia.
> Powiedzenie, że coś jest najlepsze, jest po prostu powiedzeniem
> nieprecyzyjnym.
Wiadomo że jest nieprecyzyjnym. W każdym przypadku co innego
oznacza najlepszy. W każdym przypadku chodzi o inną jakość algorytmów czy
heurystyk. Obojętnie o jaką jakość chodzi, to trudno dowieść jej
formalnie na podstawie kodu.
> Co to znaczy "najlepsze"? Że przynosi najwięcej
> pieniędzy? Że ma najwięcej użytkowników? Że najbardziej podoba
> się klientowi?
Tak, dobre przykłady.
> Jeżeli podajesz jawnie złą specyfikację, to potem nie możesz mówić
> "zakładamy, że specyfikacja jest dobra", bo nie jest.
Można tak mówić, ponieważ to generalne określenie w każdym przypadku
się konkretyzuje. Bez względu na to jak się skonkretyzuje, to ciężko
dokonać takiego dowodu formalnego.
>
> > > Zresztą cechy użytkowe nie są czymś, co dowodzi się formalnie
> > > (bo są subiektywne). Formalnie chcemy dowodzić raczej pewnych
> > > inwariantów -- że na przykład w programie wielowątkowym nie dojdzie
> > > do sytuacji dead-locku (klasyczne zastosowane logik temporalnych),
> > Nie słyszałem o logice temporalnej. Może się mylę, ale to się
> > wydaje łatwe. Dla mnie taki dowód sprowadza się do tego, aby
> > wszystkie pary kodu, który może wykonać się równolegle, były
> > opatrzone semaforami w tej samej kolejności w sensie wykonania i
> > w odwrotnej kolejności (też w sensie wykonania).
>
> Mylisz się z pewnością, choćby dlatego, że semafor nie jest jedynym
> mechanizmem synchronizującym używanym w programach wielowątkowych.
Jeśli odebrałeś moje słowa dosłownie, to mam prośbę. Najpierw uogólnij
sobie mój 'semafor' na inne mechanizmy synchronizowania, a potem
przeanalizuj czy się mylę. Potem pogadamy dalej.
Następne wpisy z tego wątku
- 31.03.15 16:39 g...@g...com
- 31.03.15 19:08 slawek
- 31.03.15 19:29 M.M.
- 31.03.15 19:43 M.M.
- 31.03.15 19:49 g...@g...com
- 31.03.15 19:59 slawek
- 31.03.15 20:10 slawek
- 31.03.15 20:34 g...@g...com
- 31.03.15 21:01 M.M.
- 31.03.15 23:04 slawek
- 31.03.15 23:25 g...@g...com
- 31.03.15 23:32 Andrzej Jarzabek
- 31.03.15 23:59 slawek
- 01.04.15 00:08 g...@g...com
- 01.04.15 08:46 firr
Najnowsze wątki z tej grupy
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-05-31 Skoro jest tak dobrze i TANIO to dlaczego jeszcze nie jeździmy na takich akumulatorach?
- 2025-05-31 Warszawa => IT Data Analyst (obszar Power BI) <=
- 2025-05-31 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-05-31 Środa Wielkopolska => Konsultant wewnętrzny SAP FI/CO <=
- 2025-05-31 Gdańsk => PHP Developer <=
- 2025-05-31 Lublin => Delphi Programmer <=
- 2025-05-31 co to za obcęgi? [OT]
- 2025-05-30 Rondo :)
- 2025-05-30 Warszawa => Senior Account Manager <=
- 2025-05-30 Warszawa => Senior C++ Developer (analiza numeryczna i modelowanie) <=
- 2025-05-30 Gdańsk => Team Lead Data Engineer (Snowflake) <=
- 2025-05-30 Warszawa => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-05-30 Gdańsk => Programista Delphi <=
- 2025-05-30 Warszawa => Software Engineer .Net <=
- 2025-05-30 Warszawa => Inżynier oprogramowania .Net <=