eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingZabawy w algorytmikę.
Ilość wypowiedzi w tym wątku: 57

  • 31. Data: 2013-05-13 10:14:04
    Temat: Re: Zabawy w algorytmik?.
    Od: "R.e.m.e.K" <g...@d...null>

    Dnia Mon, 13 May 2013 02:20:56 +0200, bartekltg napisał(a):

    >
    > PS. jeśli post pojawi się dwa razy, wszytko wina aioe:)

    Pojawilo :-)

    Polecam serwer neostrady, jest otwarty dla wszystkich od pewnego czasu i
    stabilny.

    --
    pozdro
    R.e.m.e.K


  • 32. Data: 2013-05-13 10:58:49
    Temat: Re: Zabawy w algorytmikę.
    Od: "M.M." <m...@g...com>

    W dniu sobota, 11 maja 2013 12:28:04 UTC+2 użytkownik bartekltg napisał:

    > W skrócie, parzysta liczba 'kliknięć' w pole jest redukowana
    > do zera.
    Bym to ujął trochę inaczej. Parzysta ilość kliknięć w dane pole
    powoduje, że pola na które kliknięcie ma wpływ, przyjmują wartości takie
    jak w stanie początkowym.


    > Kolejność klikania też nie ma znaczenie.
    Jasne, takie ma właściwości xor.


    > Możesz więc klikną raz lub w ogole. Stąd też wiadomo,
    > że kliknięć nie będzie więcej niż pol szachownicy.
    Jasne.


    > Zapisz kliknięcia jako wektor v.
    Rozumiem, że mamy wektor zero-jedynkowy o rozmiarze
    n*m. Jak wektor ma jedynkę, to było kliknięcie, a jak zero to
    kliknięcia nie było. Wektor v jest rozwiązaniem.


    > Wtedy stan danego pola możesz opisać jakio w = A*v
    > gdzie A to niezbyt gęsta macierz (mniej niż 5*n*m elementów).
    > Oba wektory mają długość m*n, maciesrz siłą rzeczy (m*n)x(m*n).
    > Wszytko dzieje się modulo 2.
    Nie wiem co to za macierz A. Na razie widzę tak:
    v[n*m] - kolumnowy zero-jedynkowy wektor kliknięć
    x[n*m] - wierszowy zero-jedynkowy wektor wpływu kliknięcia
    b[n*m] - kolumnowy zero-jedynkowy stan początkowy
    i - wektor jedynkowy
    b = (v*x*i) .modulo 2
    Szukamy wektora zero-jedynkowego v. Siłowe sprawdzenie ma
    złożoność (n*m)^2. Szybsze zaproponowałem kilka postów
    wyżej z rekurencją i zapamiętywaniem ile razy było zapamiętane
    dane pole i w którym wywołaniu rekurencyjnym - nie jestem
    pewny na 100% czy zadziała.


    > Konfiguracja zapalająca czy konfiguracja gasząca to to samo,
    > więc szykamy v, takiego, że w to nasz stan początkowy i
    > w = A*v
    Jasne, poza macierzą A.


    > Po pierwsze, da się rozwiązać, kiedy w siedzi w przestrzeni rozpiętej
    > przez kolumny A (jest a obrazie A, dość trywialny wniosek).
    > Ponieważ obraz A będzie duży, łatwiej do algorytmu wyznaczyć kojądro*)
    > i sprawdzać, czy aby nasza oczekiwana konfiguracja sie z nim nie
    > przecina (iloczynem skalarnym).
    Jak to sie rozwiązuje i co to za macierz A?

    Pozdrawiam



  • 33. Data: 2013-05-13 11:54:17
    Temat: Re: Zabawy w algorytmikę.
    Od: Miroslaw Kwasniak <m...@i...zind.ikem.pwr.wroc.pl>

    bartekltg <b...@g...com> wrote:
    > W dniu 2013-05-12 23:01, Vax pisze:
    >> W dniu 2013-05-12 22:51, bartekltg pisze:
    >>
    >>>> Rozpatrywanie tego algorytmu jest mało sensowne, ale skoro chcesz:
    >>>> mamy 2^(m*n) prób. W każdej musimy wygenerować tablicę opisującą
    >>>> stan lampek. Jeśli rzeczywiście będziemy budować ją od początku,
    >>>> wykonamy O(m*n) operacji. Ale nie musimy tego robić, wystarczy, że
    >>>> naniesiemy poprawki. Jeśli różnił się jeden bit, poprawka jest w 5
    >>>> miejscach. Super.
    >>
    >> tablica 5 x 100 - z dowolnej kombinacji masz 500 innych "różnych o jeden
    >> bit", ale czymże to jest wobec 2^500...
    >
    > Jesteś jedyną osobą, która w ogole wspomina o czymś takim!
    > Czyżbyś sugerował, że "mój" alg tyle działa? Czyli jednak nie
    > załapałeś;>
    >
    > Opisany prze zemnie algorytm ma cześć 'wykładniczą'
    > 2^l, gdzie l jest co najwyżej 5.

    Dla 5 x 100 l=0 ;)


  • 34. Data: 2013-05-13 13:07:39
    Temat: Re: Zabawy w algorytmikę.
    Od: Miroslaw Kwasniak <m...@i...zind.ikem.pwr.wroc.pl>

    Vax <...@i...nie.ma> wrote:
    > Trzymając się dalej tablicy np. 8 x 1024, musimy wykonać najwyżej 256
    > iteracji, od 00000000(bin) do 11111111(bin), czyli np. zwykłą pętlą od 0
    > do 255 sobie polecieć. Licznik pętli ma już sam z siebie na sobie
    > zapisane wszystkie układy "klików" do przetestowania.
    > Gdy kombinacja dla pierwszego wiersza jest dobra, to mamy sukces (i
    > możemy prościutko odtworzyć wszystkie pola wymagające kliknięcia).

    Ale to nie musi to być rozwiązanie optymalne - gdy takiego szukasz, to musisz
    przejrzeć wszystkie :(
    Chyba, że null-space jest pusta.

    Każda metoda ma swój techniczny zakres stosowalności.
    Twoja jest dobra dla wąskich macierzy, ale co zrobisz dla 40 x 40?
    Ja w pari-gp (czyli tak sobie optymalnym narzędziu) mam wynik poniżej 1 sekundy.



  • 35. Data: 2013-05-13 13:46:19
    Temat: Re: Zabawy w algorytmikę.
    Od: bartekltg <b...@g...com>

    W dniu 2013-05-13 11:54, Miroslaw Kwasniak pisze:
    > bartekltg <b...@g...com> wrote:
    >> W dniu 2013-05-12 23:01, Vax pisze:
    >>> W dniu 2013-05-12 22:51, bartekltg pisze:
    >>>
    >>>>> Rozpatrywanie tego algorytmu jest mało sensowne, ale skoro chcesz:
    >>>>> mamy 2^(m*n) prób. W każdej musimy wygenerować tablicę opisującą
    >>>>> stan lampek. Jeśli rzeczywiście będziemy budować ją od początku,
    >>>>> wykonamy O(m*n) operacji. Ale nie musimy tego robić, wystarczy, że
    >>>>> naniesiemy poprawki. Jeśli różnił się jeden bit, poprawka jest w 5
    >>>>> miejscach. Super.
    >>>
    >>> tablica 5 x 100 - z dowolnej kombinacji masz 500 innych "różnych o jeden
    >>> bit", ale czymże to jest wobec 2^500...
    >>
    >> Jesteś jedyną osobą, która w ogole wspomina o czymś takim!
    >> Czyżbyś sugerował, że "mój" alg tyle działa? Czyli jednak nie
    >> załapałeś;>
    >>
    >> Opisany prze zemnie algorytm ma cześć 'wykładniczą'
    >> 2^l, gdzie l jest co najwyżej 5.
    >
    > Dla 5 x 100 l=0 ;)

    n = 100;
    m = 5;
    Nn = DiagonalMatrix[ConstantArray[1/2, n]] +
    DiagonalMatrix[ConstantArray[1, n - 1], 1] +
    DiagonalMatrix[ConstantArray[1, n - 1], -1];
    M = DiagonalMatrix[ConstantArray[1/2, m]] +
    DiagonalMatrix[ConstantArray[1, m - 1], 1] +
    DiagonalMatrix[ConstantArray[1, m - 1], -1];

    A = KroneckerProduct[M, IdentityMatrix[n]] +
    KroneckerProduct[IdentityMatrix[m], Nn];

    m*n - MatrixRank[A, Modulus -> 2]

    Out[310]= 0

    Zgadza się:)

    Masz jakiś sprytniejszy pomysł na liczenie tego?


    Odpaliłem wczoraj wieczorem bardzo niewydajną maszynkę,
    która zrobiła tabelkę:
    http://www.sendspace.com/file/xl0izd

    Przy okazji, zna ktoś sprawniejszą maszynkę do takich
    działań? Lapack dla ciał Z_p ;)

    pzdr
    bartekltg



  • 36. Data: 2013-05-13 13:57:45
    Temat: Re: Zabawy w algorytmikę.
    Od: bartekltg <b...@g...com>

    W dniu 2013-05-13 13:07, Miroslaw Kwasniak pisze:
    > Vax <...@i...nie.ma> wrote:
    >> Trzymając się dalej tablicy np. 8 x 1024, musimy wykonać najwyżej 256
    >> iteracji, od 00000000(bin) do 11111111(bin), czyli np. zwykłą pętlą od 0
    >> do 255 sobie polecieć. Licznik pętli ma już sam z siebie na sobie
    >> zapisane wszystkie układy "klików" do przetestowania.
    >> Gdy kombinacja dla pierwszego wiersza jest dobra, to mamy sukces (i
    >> możemy prościutko odtworzyć wszystkie pola wymagające kliknięcia).
    >
    > Ale to nie musi to być rozwiązanie optymalne - gdy takiego szukasz, to musisz
    przejrzeć wszystkie :(
    > Chyba, że null-space jest pusta.
    >
    > Każda metoda ma swój techniczny zakres stosowalności.
    > Twoja jest dobra dla wąskich macierzy, ale co zrobisz dla 40 x 40?
    > Ja w pari-gp (czyli tak sobie optymalnym narzędziu) mam wynik poniżej 1 sekundy.


    Hehe, spryciarz;> A dla 39x39?

    Potem gorszy jest 61x61.

    pzdr
    bartekltg



  • 37. Data: 2013-05-13 13:59:15
    Temat: Re: Zabawy w algorytmikę.
    Od: bartekltg <b...@g...com>

    W dniu 2013-05-13 13:07, Miroslaw Kwasniak pisze:
    > Vax <...@i...nie.ma> wrote:
    >> Trzymając się dalej tablicy np. 8 x 1024, musimy wykonać najwyżej 256
    >> iteracji, od 00000000(bin) do 11111111(bin), czyli np. zwykłą pętlą od 0
    >> do 255 sobie polecieć. Licznik pętli ma już sam z siebie na sobie
    >> zapisane wszystkie układy "klików" do przetestowania.
    >> Gdy kombinacja dla pierwszego wiersza jest dobra, to mamy sukces (i
    >> możemy prościutko odtworzyć wszystkie pola wymagające kliknięcia).
    >
    > Ale to nie musi to być rozwiązanie optymalne - gdy takiego szukasz, to musisz
    przejrzeć wszystkie :(
    > Chyba, że null-space jest pusta.
    >
    > Każda metoda ma swój techniczny zakres stosowalności.
    > Twoja jest dobra dla wąskich macierzy, ale co zrobisz dla 40 x 40?
    > Ja w pari-gp (czyli tak sobie optymalnym narzędziu) mam wynik poniżej 1 sekundy.


    Hehe, spryciarz;> A dla 39x39?

    Potem gorszy jest 61x61.

    pzdr
    bartekltg



  • 38. Data: 2013-05-13 14:00:05
    Temat: Re: Zabawy w algorytmikę.
    Od: bartekltg <b...@g...com>

    W dniu 2013-05-13 11:54, Miroslaw Kwasniak pisze:
    > bartekltg <b...@g...com> wrote:
    >> W dniu 2013-05-12 23:01, Vax pisze:
    >>> W dniu 2013-05-12 22:51, bartekltg pisze:
    >>>
    >>>>> Rozpatrywanie tego algorytmu jest mało sensowne, ale skoro chcesz:
    >>>>> mamy 2^(m*n) prób. W każdej musimy wygenerować tablicę opisującą
    >>>>> stan lampek. Jeśli rzeczywiście będziemy budować ją od początku,
    >>>>> wykonamy O(m*n) operacji. Ale nie musimy tego robić, wystarczy, że
    >>>>> naniesiemy poprawki. Jeśli różnił się jeden bit, poprawka jest w 5
    >>>>> miejscach. Super.
    >>>
    >>> tablica 5 x 100 - z dowolnej kombinacji masz 500 innych "różnych o jeden
    >>> bit", ale czymże to jest wobec 2^500...
    >>
    >> Jesteś jedyną osobą, która w ogole wspomina o czymś takim!
    >> Czyżbyś sugerował, że "mój" alg tyle działa? Czyli jednak nie
    >> załapałeś;>
    >>
    >> Opisany prze zemnie algorytm ma cześć 'wykładniczą'
    >> 2^l, gdzie l jest co najwyżej 5.
    >
    > Dla 5 x 100 l=0 ;)

    n = 100;
    m = 5;
    Nn = DiagonalMatrix[ConstantArray[1/2, n]] +
    DiagonalMatrix[ConstantArray[1, n - 1], 1] +
    DiagonalMatrix[ConstantArray[1, n - 1], -1];
    M = DiagonalMatrix[ConstantArray[1/2, m]] +
    DiagonalMatrix[ConstantArray[1, m - 1], 1] +
    DiagonalMatrix[ConstantArray[1, m - 1], -1];

    A = KroneckerProduct[M, IdentityMatrix[n]] +
    KroneckerProduct[IdentityMatrix[m], Nn];

    m*n - MatrixRank[A, Modulus -> 2]

    Out[310]= 0

    Zgadza się:)

    Masz jakiś sprytniejszy pomysł na liczenie tego?


    Odpaliłem wczoraj wieczorem bardzo niewydajną maszynkę,
    która zrobiła tabelkę:
    http://www.sendspace.com/file/xl0izd

    Przy okazji, zna ktoś sprawniejszą maszynkę do takich
    działań? Lapack dla ciał Z_p

    pzdr
    bartekltg



  • 39. Data: 2013-05-13 14:04:26
    Temat: Re: Zabawy w algorytmikę.
    Od: bartekltg <b...@g...com>

    W dniu 2013-05-13 10:58, M.M. pisze:

    >> Zapisz kliknięcia jako wektor v.
    > Rozumiem, że mamy wektor zero-jedynkowy o rozmiarze
    > n*m. Jak wektor ma jedynkę, to było kliknięcie, a jak zero to
    > kliknięcia nie było. Wektor v jest rozwiązaniem.

    Tak.


    >> Wtedy stan danego pola możesz opisać jakio w = A*v
    >> gdzie A to niezbyt gęsta macierz (mniej niż 5*n*m elementów).
    >> Oba wektory mają długość m*n, maciesrz siłą rzeczy (m*n)x(m*n).
    >> Wszytko dzieje się modulo 2.
    > Nie wiem co to za macierz A. Na razie widzę tak:


    Bo to było w poprzednich postach (ten jest już o nieco czym innym:)),
    w szczególności tym Message-ID: <kml6fm$7ev$1@node1.news.atman.pl>


    W skrócie, macierz wiążąca kliknięcie z zapaleniem.
    Bardzo podobna do dyskretnego laplasjanu, tylko wszędzie
    ma jedynki.


    pzdr
    bartekltg


  • 40. Data: 2013-05-13 14:13:23
    Temat: Re: Zabawy w algorytmik?.
    Od: bartekltg <b...@g...com>

    W dniu 2013-05-13 10:14, R.e.m.e.K pisze:
    > Dnia Mon, 13 May 2013 02:20:56 +0200, bartekltg napisał(a):
    >
    >>
    >> PS. jeśli post pojawi się dwa razy, wszytko wina aioe:)
    >
    > Pojawilo :-)
    >
    > Polecam serwer neostrady, jest otwarty dla wszystkich od pewnego czasu i
    > stabilny.

    Mam nawet podpiętego w thunderbirdzie, ale tylko dwie grupy,
    widać coś było nie tak.

    Próbowałem wygooglać, czy da się zmusić thunderbirda do czytania
    na raz z kilku serwerów, ale nic nie znalazłem (hamster chyba zdechl).

    pzdr
    bartekltg

strony : 1 ... 3 . [ 4 ] . 5 . 6


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: