Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

kubit stochastyczny... co Wy na to ??

Idź do strony Poprzedni  1, 2, 3, 4  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pon Kwi 23, 2018 8:02 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

inne podejście do kompresji... załóżmy, że mamy liczbę:
Kod:

2852919586894990817426522853769297317427761588025791182009953452869639656250321572
4091454916734626532812984084981622778264139522240629822173418280114933316913925783
9032751513714909985047158760294823644477343949460925069494696164684752338235841711
2272319828325372468154731373289780707695620170818141852859530558646651507297543099
0640849559819047848213516491254284544313690673095146387821065943634419498952918747
4413743235199930453371211713814191347361389694790982995032846601409395238975075092
4482938119851763065580596615762801664584664634835549277558699169903197645115837116
5792941192077850118093123924550511079877370954677064501187428114545989950666113277
3616652634423279299642862273348116009872958712038065583009245909209920513805564945
0107884197367558935184534160497104126087482700823712603271090302766603400136319079
3607168457940396235223811634652708248049792196065838293783573818892689926403728922
5536041443886730538279746413645943743977565228263233262072726366614903747144494656
9693296781768376275763784251113123364553185849055220007544247572579351306665792771
3937823728615350224886010710008978685239067438518969408328621479716904552547285994
7580891392614390173367478617960663649956276799252712449197729722691124559373103696
4256089594640870852668827301887549895558751542835008313804579482489250170367178717
4194850207742390960972996120081122326386510623777092502599576315635588335143050616
4080993968265475306265033914650337403588760440585853398657373740561974917864361820
3577885640288194634942351191359914911976616968556674453830233847995436458644771747
1665131593630188824953056958659839639766810220186831784686475477257314793516408026
3757301027717498690662760799681577712458137600000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000


Ma ona 2484 znaki... Jak ją skompresować ?? Można spróbować poszukać rozkładu na czynniki pierwsze używając np. takiego prostego kodu:
Kod:

tab = [2, 3, 5, 7, 11, 13]
V={}
for i in tab:
    V[i]=0

for i in tab:
    while a % i == 0:
        V[i] += 1
        a = a // i
print(V)


Oczywiście odpowiada to kubitowi:
Kod:

|2^2000>|3^1000>|5^800>|7^1000>


Jak widać kompresja jest dość spora...

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pon Kwi 23, 2018 9:08 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

generalnie liczby możnaby przechowywać w postaci rozkładu na czynniki pierwsze... tylko pojawia si≤ę tu problem faktoryzacji... natomiast mnożenie w takiej wersji odbywałoby się raczej szybko... dodajemy tylko słowniki... trudniejsze o dziwo dodawanie...

Kod:

## mnozenie liczb w wersji po faktoryzacji

a = 10608
b = 2801175

## szukamy rozkładu na czynniki pierwsze i zapisujemy liczbę w postaci słownika
V= {13: 1, 17: 1, 2: 4, 3: 1}
W = {5: 2, 17: 1, 3: 1, 13: 3}

## mnozenie, proste...
Z = {}
for k in V.keys():
    Z[k] = V[k]
for k in W.keys():
    if k in Z.keys():
        Z[k] += W[k]
    else:
        Z[k] = W[k]

## dodawanie troche trudniejsze... :)

aa = set(V.keys())
bb = set(W.keys())
s = aa.intersection(bb)
print(s)
x = 1
y = 1
Z ={}
for elem in s:
    q = min(V[elem], W[elem])
    Z[elem] = q
    x *= elem**(V[elem]-q)
    y *= elem**(W[elem]-q)
for elem in V.keys():
    if not elem in s:
        x *= elem**V[elem]
for elem in W.keys():
    if not elem in s:
        y *= elem**W[elem]        

wynik = x + y
## nastepnie szukamy faktoryzacji liczby wynik
## i dodajemy otrzymany słownik do Z analogicznie jak przy mnożeniu
## liczba wynik jest pierwsza
Z[wynik] = 1


Dobra na razie koniec dywagacji... ^^
_____________________________________

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Wto Kwi 24, 2018 7:25 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

a teraz z rana, mały przerywnik... matematyczny... dowód Twierdzenia Fermata na parę linijek... trochę wierzyć mi się nie chce, zastanawiam się czy to jest dobrze, i gdzie jest ewentualnie luka... Twierdzenie Fermata mówi o tym, że równanie
Kod:

x^n + y^n = z^n, n > 2


nie ma rozwiązania w liczbach całkowitych... Od dawna się zastanawiałem czy istnieje elementarne rozwiązanie… Ale nie myślałem nad tym prawie w ogóle, dzisiaj mi się tak jakoś skojarzyło… Mam pewną ideę…
__________________________________________________________________________________________
Zapisujemy liczby x, y w postaci zespolonej, trochę nietypowo:
Kod:

x = x*(cos(2pi) + i*sin(2pi))  = x * cos(2pi)
y = y*(cos(2pi) + i*sin(2pi))  = y * cos(2pi)


Obliczamy zgodnie z regułami liczb zespolonych:
Kod:

x^n = x^n * cos(n*2pi) = x^n *cos(2pi)
y^n = y^n * cos(n*2pi) = y^n *cos(2pi)


Obliczamy teraz trzeci składnik:
Kod:

z^n = x^n + y^n = cos(2pi) (x^n+y^n)


zgodnie ze wzorem de Moivre'a otrzymujemy
Kod:

z = cos(2pi/n)*sqrt(x^n+y^n)


Stąd wynika, że jeżeli istnieje rozwiązanie całkowite, to n musi być podzielnikiem liczby 2…
____________________________________________________________________________________________

Miłego Dnia... ^^

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Sro Kwi 25, 2018 5:56 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

a jednak jest looka... nie ukrywam, że ciśnienie mi się podniosło ciut... a może nawet innym trochę, hehe... ^^

HomeWork (nie tylko dla studentów): gdzie jest looka... ??
________________________________________________________________________________________________

Bez wątpienia Tw Fermata może być istotną częścią ujęcia kubitowego, o ile to ujęcie ma sens...

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Czw Kwi 26, 2018 9:04 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

Ciekawostka z rana... Twierdzenie Fermata jest nieprawdziwe w zbiorze macierzy o wyrazach całkowitych... Trochę odbiegłem od głównego wątku, ale nie całkiem, przypominam, że kubit może być macierzą...

Niech więc:
Kod:

A = [[i0, 0], [0,0]],   B=[[0, 0], [0, j0]], i0, j0 dowolne, całkowite, dodatnie...


Wtedy:
Kod:

A^n+B^n = [[i0^n, 0], [0, 0]] + [[0, 0], [0, j0^n]] = [[i0^n, 0], [0, j0^n]] = ([[i0, 0], [0, j0]])^n


______________

Miłego Dnia...

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Czw Kwi 26, 2018 12:25 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Trochę teorii (sorki, postaram się dużo nie pisać, ale chcę się podzielić, może ktoś będzie tym zainteresowany)…

Rozważmy dwa kubity stochastyczne…
Kod:

a*|0>+b*|1>,   c*|0>+d*|1>, a+b = 1, c+d = 1, a, b, c, d nieujemne...


Kubit drugiego rzędu (wyższego też) nazwiemy splątanym, jeżeli nie istnieje superpozycja kubitów pierwszego rzędu (u nas to jest zwykłe mnożenie, w mechanice kwantowej jest to iloczyn tensorowy, więc ciut bardziej skomplikowane narzędzie)… Okazuje się, że kubit (stochastyczny):
Kod:

1/2*|00> + 1/2*|11>


jest splątany…
Kod:

1/2*|00>+1/2*|11> = (a*|0>+b*|1>)*(c*|0>+d*|1>) = ac*|00> + ad*|01> + bc*|10> + bd*|11>


Stąd wynika, że ac = ½, ad = 0, bc = 0, bd = ½. Łatwo wywnioskować, że c=0, d=0… więc otrzymujemy sprzeczność, c+d powinno być równe 1…

Podobnie można rozważać kubity postaci:
Kod:

1/2*|000...00> + 1/2*|111...11> = 1/2*|0^n> + 1/2*|1^n>


Jak widać skojarzenie z Twierdzeniem Fermata jest w miarę widoczne… I teraz pytanie za 5 pkt… czy są jakieś związki między Twierdzeniem Fermata, a stanami splątanymi w mechanice kwantowej… ??
______________________________

MIłego Dnia... ^^

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pią Kwi 27, 2018 8:29 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

następny odcinek... jeżeli liczbę przechowywalibyśmy w postaci rozkładu na liczby pierwsze (myślę, tu o iloczynie)... to nie byłoby problemu z potęgowaniem...

Jeżeli np. chcemy policzyć
Kod:

630^5


Wtedy obliczamy rozkład na iloczyn liczb pierwszych:
Kod:

630 = 2 * 3^2 * 5 * 7


Można zapisać tę liczbę w postaci słownika:
Kod:

V={2:1, 3:2, 5:1, 7:1}


Interpretacja kubitowa:
Kod:

|630|> = |2>|3^2>|5>|7>


Aby obliczyć 630^5 wymnażamy tylko wykładniki przez 5... Czyli wystarczy kod:
Kod:

for i in V.keys():
    V[i] *= 5



Wniosek 1. może wartoby budować kubity w oparciu o liczby pierwsze i ich potęgi (głośno myślę)... Bez wątpienia w takim ujęciu ważna będzie Teoria Liczb... problem faktoryzacji także jest istotny... Natomiast pytanie jak zorganizować w tym ujęciu pojęcie kubitu stochastycznego... Nie wiem czy ogarniacie... Jest to na razie ciut niespójne... Ogarniam równolegle parę wątków...

Wniosek 2. ciekawie może wyglądać obliczanie NWD w takim ujęciu (NWW także)... jeżeli mamy liczby a, b... to w ujęciu rozkładu na liczby pierwsze mamy słowniki V, W... wtedy:
Kod:

(NWD(a, b)).keys() = set(V.keys()).intersection(W.keys())


___________________________________

Miłego Dnia... ^^

_________________
miasto nauki praktycznej


Ostatnio zmieniony przez hurgadion dnia Pią Kwi 27, 2018 4:21 pm, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pią Kwi 27, 2018 1:01 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Przy takiej "słownikowej" prezentacji liczby można dostać proste kryterium dla stwierdzenia czy równanie
Kod:

x^n = a, załóżmy, że n>1


ma rozwiązanie dla ustalonego a naturalnego... Kryterium jest następujące: równanie ma rozwiązanie, jeżeli
Kod:

for i in V.keys():
    V[i] % n == 0


gdzie V jest słownikiem z reprezentacją liczby jako rozkładu na iloczyn liczb pierwszych...
___________________________________

Miłego Dnia... ^^

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Pią Kwi 27, 2018 10:52 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

no... to kwiecień zaowocował lekką weną, nazwijmy ją twórczą... na razie mówię pas, w końcu to jest forum, a nnie blog... ale jeżeli byłby ktoś zainteresowany podjęciem współpracy, niekoniecznie w temacie kubitu statystycznego, to jestem otwarty... PS. przykro mi, ale z rekruterami nie rozmawiam...
_______________________________

Miłego Dania... ^^

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
hurgadion



Dołączył: 06 Kwi 2011
Posty: 853
Skąd: Web :)

PostWysłany: Wto Maj 01, 2018 8:10 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

nowy miesiąc... nowa pomysła... tak trochę się zrobiło teorioliczbowo... ^^

Ciekawe byłoby (być może) wykorzystanie hipotezy Goldbacha w ujęciu implementacji liczb… Gdyby ta Hipoteza była prawdziwa, to możnaby przechowywać każdą liczbę jako parę liczb pierwszych, i jeżeli zdefiniowalibyśmy tablice działań na tych liczbach… to wykonywalibyśmy obliczenia w czasie bliskim chyba O(1)… ^^

Hipoteza Goldbacha.
Każdą liczbę większą od czterech można rozłożyć na sumę dwóch liczb pierwszych…

Przykład
Niech a = 18, b = 32, wtedy:
Kod:

a + b = 8 + 32 = (7+11) + (3+29)
a * b = 18 * 32 = (7+11) * (3+29) = 7*3 + 7*29 + 11*3 + 11*29


Dla liczb nieparzystych wystarczy lekka modyfikacja... Kod w Pythonie...
Kod:

a = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83]
a += [89, 97, 101, 103, 107, 109, 113, 127, 131, 1337, 139, 149, 151, 157, 163, 167, 173, 179]
a += [181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271]
a += [277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373]

V={}
W={}
Z={}
U={}

for i in a:
    for j in a:
        V[(i, j)] = i+j
        W[i+j] = (i, j)
        Z[(i, j)] = i*j
        U[i*j] = (i, j)

x = 18
y = 32

# dodawanie
def dodawanie(x, y):
    flaga = False
    z = 2*x
    suma = 0
    if x % 2 == 1:
        suma += 1
        x -= 1
    if y % 2 == 1:
        suma += 1
        y -= 1
    while x<z:
        if (x, y) in V.keys():
            flaga = True
            break
        else:
            x += 1
            y -= 1
    if not flaga:
        while 1:
            if (x, y) in V.keys():
                flaga = True
                break
            else:
                x -= 1
                y += 1
    return V[(x, y)]

# mnozenie
def mnozenie(x, y):
    p = (p1, p2) = W[x]
    r = (p3, p4) = W[y]
    s = [Z[(p1, p3)], Z[(p1, p4)], Z[(p2, p3)], Z[(p2, p4)]]
    
    w1 = dodawanie(s[0], s[1])
    w2 = dodawanie(s[2], s[3])
    w3 = dodawanie(w1, w2)
    return w1+w2+suma

print(mnozenie(y, x))


Miłego Dnia... ^^
_________________

_________________
miasto nauki praktycznej
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora Numer GG
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Algorytmy + inżynieria oprogramowania Wszystkie czasy w strefie CET (Europa)
Idź do strony Poprzedni  1, 2, 3, 4  Następny
Strona 3 z 4

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.13674 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |