Jump to content

ukázka Q# - programujeme v kvantech


hackos

Recommended Posts

0.  Úvod do kvantových počítačů

Výzkum kvantových počítačů začal na začátku 80. let 20. století a jedním z prvních výzkumníků byl fyzik Richard Feynman, který se věnoval kvantové mechanice. Výzkum tedy probíhá okolo 45 let a dnes nabývá na síle, díky nejdůležitějším technologickým firmám jako je  IBM, Google, Microsoft a v neposlední řadě se výzkumem zabývá také Amazon. Například  IBM vyvinulo službu Quantum a jejich kvantové procesory jsou dostupné i přes cloud. O tom o čem je vlastně kvantová teorie pojednává tento článek. What is a photon? (anglicky). Zmíněný Microsoft přišel s programovacím jazykem Q#, jehož se bude věnovat toto téma.

 

 

1. Úvod do Q#

Q# (čti „kvé-šárp“) je programovací jazyk vytvořený společností Microsoft speciálně pro kvantové výpočty. Je součástí Quantum Development Kit (QDK) a je navržen tak, aby usnadnil vývoj kvantových algoritmů a jejich simulaci na klasických počítačích. Data u kvantových počítačů jsou na rozdíl od klasických "počítačích",  jsou místo klasických bitů reprezentována qubity (kvantovými bity), které mohou nabývat nejen klasických hodnot 0 či 1, ale mohou se nacházet také v superpozici obou hodnot.

 

2. Struktura programu Q#

Tento kód níže  je napsán v jazyce Q#, který se používá pro kvantové programování na platformě Microsoft Quantum Development Kit.  Tento program vytvoří qubit, provede měření a vypíše výsledek.

operation HelloQuantum() : Unit {
    use q = Qubit();  // Alokace qubitu
    H(q);             // Aplikace *Hadamardovy brány
    let result = M(q); // Měření qubitu
    Message($"Výsledek měření: {result}");
    Reset(q);         // Reset qubitu před uvolněním
}

* Hadamardovy brány jsou klíčovým prvkem kvantových výpočtů. Jsou to jednopólové kvantové logické brány, které umožňují převést kvantový bit (qubit) do superpozice.

 

let result = M(q);

 

Měření M(q) způsobí kolaps superpozice do jednoho z možných stavů:

  • S 50% pravděpodobností dostaneme 0.
  • S 50% pravděpodobností dostaneme 1.

 

3. Závěr

U kvantových počítačů je na co se těšit v budoucnu. Předpokládám, že do 30 let budou kvantové počítače běžnou součástí domácností po celém "bohatém" světě.

 

ZDROJE POUŽITÉ:

https://cs.wikipedia.org/wiki/Kvantový_počítač

https://learn.microsoft.com/en-us/azure/quantum/qsharp-overview

Link to comment
Share on other sites

  • Globální moderátor

Jako hezky, ale stale jsem ani od tebe ani jinde nepochopil jaka je toho vlaste vyhoda, ze jednou je vysledek 1 a jednou 0. Dalsi vec, ja si urcite pockam na nejakou verzi co neni od mrkvosoftu, ale to je vedlejsi.

Link to comment
Share on other sites

před 4hodinami, Hip said:

Jako hezky, ale stale jsem ani od tebe ani jinde nepochopil jaka je toho vlaste vyhoda, ze jednou je vysledek 1 a jednou 0. Dalsi vec, ja si urcite pockam na nejakou verzi co neni od mrkvosoftu, ale to je vedlejsi.

Ludia nadavaju na Microsoft a potom pouzivaju TypeScript, pushuju svoj kod na GitHub a releasuju package na NPM. React je este od menej oblubeneho Facebooku a nikomu to neprekaza. LOL

Microsoft nie je to co bol 10 rokov dozadu. Netreba byt konzervativny.

Q# je opensource pod MIT licenciou rovnako ako C#.

https://github.com/microsoft/qsharp

 

1. Paralelné spracovanie a superpozícia

Kvantové bity (qubity) môžu existovať v stave 0 a 1 súčasne vďaka superpozícii. To znamená, že kvantový počítač môže spracovávať viaceré riešenia naraz, čím sa urýchľujú výpočty oproti klasickým bitom, ktoré môžu byť iba 0 alebo 1.

2. Kvantová previazanosť (Entanglement)

Qubity môžu byť previazané, čo znamená, že stav jedného qubitu okamžite ovplyvňuje stav iného, aj keď sú od seba vzdialené. To umožňuje extrémne rýchlu komunikáciu a synchronizáciu výpočtov, čo môže dramaticky zvýšiť efektivitu algoritmov.

3. Exponenciálne zrýchlenie niektorých algoritmov

Vďaka paralelnému spracovaniu dokážu kvantové počítače riešiť niektoré úlohy oveľa rýchlejšie ako klasické:

  • Faktorizácia čísel (Shorov algoritmus) – veľký vplyv na kryptografiu (rozbitie RSA šifrovania).
  • Vyhľadávanie v neštruktúrovaných dátach (Groverov algoritmus) – kvantové počítače dokážu hľadať v databázach rýchlejšie ako klasické.
  • Simulácia molekúl a kvantových systémov – výrazné zrýchlenie výskumu v chémii a materiálovej vede.

4. Efektívnejšie optimalizačné výpočty

Kvantové algoritmy môžu dramaticky zrýchliť riešenie komplexných optimalizačných problémov, ktoré sú dnes výpočtovo náročné (napr. logistika, finančné modelovanie, umelá inteligencia).

5. Kvantová komunikácia a bezpečnosť

Kvantové systémy umožňujú vytvoriť nové metódy bezpečnej komunikácie, ako je kvantová distribúcia kľúčov (QKD), ktorá je prakticky neprelomiteľná klasickými metódami.

Link to comment
Share on other sites

Priklady z chemie:

Simulacia molekuly vodiku H2

namespace QuantumSimulations {
    open Microsoft.Quantum.Chemistry;
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Canon;
    open Microsoft.Quantum.Measurement;
    
    operation RunH2Simulation() : Unit {
        // Definujeme molekulu vodíka (H₂) s geometriou v bohr
        let h2Molecule = FermionHamiltonian([
            Term(([], [1.0, 0.0]), 2.0, [(0, 0), (1, 1)]),
            Term(([], [-1.0, 0.0]), 1.0, [(0, 1), (1, 0)])
        ]);

        // Prevod Hamiltoniánu na kvantové brány
        let jordanWignerEncoding = JordanWignerEncoding(h2Molecule, 2);

        // Simulácia najnižšej energie molekuly H₂
        let energyEstimation = EstimateEnergy(jordanWignerEncoding, 2);
        
        Message($"Odhadovaná energia molekuly H₂: {energyEstimation} Ha");
    }
}

🔹 FermionHamiltonian – Definuje Hamiltonián systému na základe kvantovej mechaniky.
🔹 Jordan-Wigner Encoding – Konvertuje fermiónový Hamiltonián na kvantové brány.
🔹 EstimateEnergy – Používa kvantovú simuláciu na odhad energie molekuly.

 

Simulacia molekuly vody H20:

data v YAML:

# Definícia molekuly vody (H₂O) s jej kvantovo-chemickou reprezentáciou
geometry:
  - { atom: O, coords: [0.000000,  0.000000, 0.000000] }
  - { atom: H, coords: [0.757000, 0.586000, 0.000000] }
  - { atom: H, coords: [-0.757000, 0.586000, 0.000000] }
basis_set: STO-3G
multiplicity: 1
charge: 0

 

Q# simulacia:

namespace QuantumSimulations {
    open Microsoft.Quantum.Chemistry;
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Canon;
    open Microsoft.Quantum.Measurement;

    operation RunH2OSimulation() : Unit {
        // Definujeme geometriu molekuly vody (H₂O)
        let h2oMolecule = LoadMoleculeFromFile("h2o.yaml");

        // Transformácia Hamiltoniánu na kvantové brány pomocou Jordan-Wigner mappingu
        let jordanWignerEncoding = JordanWignerEncoding(h2oMolecule, 4);

        // Použitie kvantového algoritmu na odhad základnej energie molekuly H₂O
        let energyEstimation = EstimateEnergy(jordanWignerEncoding, 4);
        
        Message($"Odhadovaná energia molekuly H₂O: {energyEstimation} Ha");
    }
}

 

🔹 Definujeme polohu atómov kyslíka (O) a vodíka (H) v 3D priestore.
🔹 Používame STO-3G ako bázový set (jednoduchý model pre orbitály elektrónov).
🔹 Molekula má nulový náboj a multiplicitu 1 (uzavretý singletový stav).

 

Takto vieme simulovat napr. skladanie proteinov ktore maju sta tisice atomov, v realnom case, co je aktualne nemozne simulovat klasickymi pocitacmi. Nedavny prelom bol ked jedna spolocnost spravila AI s uspesnostou cez 90%.

Edited by Jiu
Link to comment
Share on other sites

  • Globální moderátor

joo to uz je zajimavejsi priklad, ale stejne z mi z toho jebe hlava do stolu. 

 

Kazdopadne ad microsoft, pred 10 lety jsem s microsoftem nemel jedinej problem. Mam s nim problem jen posledni treba 3 roky, zejmena kvuli tomu, ze vsechno od nich je nepouzitelny a jen vykorustujou. Viz treba naposledy kradez minecraft licence. Na vsechno na co sahnout tak stoji nasledne za picu. Jmenovite skype, minecraft, linkedin apod...

Link to comment
Share on other sites

před 15hodinami, Hip said:

joo to uz je zajimavejsi priklad, ale stejne z mi z toho jebe hlava do stolu. 

 

Kazdopadne ad microsoft, pred 10 lety jsem s microsoftem nemel jedinej problem. Mam s nim problem jen posledni treba 3 roky, zejmena kvuli tomu, ze vsechno od nich je nepouzitelny a jen vykorustujou. Viz treba naposledy kradez minecraft licence. Na vsechno na co sahnout tak stoji nasledne za picu. Jmenovite skype, minecraft, linkedin apod...

Mám úplně stejný názor na Microšrot a nepoužívám věci od něj. I když třeba takové Clarity používám. Ale nepoužívám operační systéma  na Co microsfot šáhn to posere.

Chtěl jsem to téma rozebrat do hloubky, co to vlastně je to kvantování a je to těžké i pro mě abych to pochopil. Zkusím příště více do hloubky probrat toto téma.

A děkuji za komentáře.

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

před 18hodinami, Hip said:

joo to uz je zajimavejsi priklad, ale stejne z mi z toho jebe hlava do stolu. 

 

Kazdopadne ad microsoft, pred 10 lety jsem s microsoftem nemel jedinej problem. Mam s nim problem jen posledni treba 3 roky, zejmena kvuli tomu, ze vsechno od nich je nepouzitelny a jen vykorustujou. Viz treba naposledy kradez minecraft licence. Na vsechno na co sahnout tak stoji nasledne za picu. Jmenovite skype, minecraft, linkedin apod...

Osobne s Minecraftom ani LinkedInom nemam problem. Novy MC content je trochu disappointing, ale v porovnani s inymi hrami (a.k.a. Ubisoft) je to stale v norme. LI mi pride stale lepsi ako FB alebo Shitter. Skype upadal rovnako ako napr. ICQ, TS2, Ventrilo a pod.

Osobne pouzivam C#/.NET, Office, Azure DevOps, Azure Portal, Entra, Exchange, GitHub, TypeScript, NPM a nemam s nimi problem. Napr. Azure DevOps ti poskytuje free LFS o velkosti 256GB kdezto GH iba 1GB. U Unity based projektoch je GH Free nepouzitelny. Robil som backendy v C#, Jave, Node a C++ a nejako nevidim miesto kde by C# zaostaval. Napr. Source Generator (moznost pisania kodu ktory sa sputi pri kompilacii ineho kodu a dokaze generovat dynamicky content; eg. automaticke binarne serializatory) mi pride ako fantasticka featura v porovnani s Compile-Time Function Execution ktory ma D lang.

Link to comment
Share on other sites

  • Globální moderátor

hele nemam problem s c#, mam problem s tou firmou celkove. Verim ze c# je skvelej, ale odmitam se koukat na cokoliv co je od microsoftu, protoze me proste okradli o 25 euro a vsechno ostatni co bylo super tak stoji ted za picu. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...