Computer Quantistico

La prossima frontiera della computazione

Cos'è il Computer Quantistico?

Il computer quantistico è un tipo di computer che utilizza i principi della meccanica quantistica per elaborare e risolvere problemi complessi in modo che i computer tradizionali non potrebbero fare. A differenza dei computer tradizionali, che utilizzano bit per rappresentare informazioni, i computer quantistici utilizzano qubit.

Per capire meglio come funziona, è utile sapere alcune cose sulla meccanica quantistica, che è la parte della fisica che studia il comportamento delle particelle su scala molto piccola, come gli atomi e le particelle subatomiche. Inoltre la meccanica quantistica applicata ai computer ha determinato una vera rivoluzione.

Infatti la creazione di un computer quantistico permetterebbe di ridurre notevolmente il tempo dei calcoli rispetto ad un computer classico, rendendo vulnerabile ogni attuale sistema crittografico. Alla luce di questo fatto, è chiaro che non basta più aumentare la lunghezza delle chiavi o la complessità degli algoritmi per rendere sicuro un documento da trasmettere, ma bisogna ricorrere a qualcosa di completamente nuovo.

Come Funziona?

Computer Tradizionali

Utilizzano bit che possono essere solo 0 o 1. I dati sono rappresentati in modo binario e le operazioni vengono eseguite in sequenza.

Computer Quantistici

Utilizzano qubit che possono essere sia 0 che 1 contemporaneamente (sovrapposizione quantistica) e possono essere "intrecciati" con altri qubit (entanglement), permettendo operazioni simultanee su molteplici stati.

Vantaggi dei Computer Quantistici

  • Simulazioni scientifiche: Aiuta a simulare fenomeni che sono difficili o impossibili da riprodurre con i metodi tradizionali, come reazioni chimiche complesse o sistemi quantistici.
  • Ottimizzazione: Migliora l'efficienza in settori come il trasporto e la gestione delle risorse, risolvendo problemi di ottimizzazione combinatoria molto più velocemente.
  • Crittografia: Permette di creare sistemi di sicurezza quasi impossibili da violare. Un computer quantistico sufficientemente potente potrebbe violare gli attuali sistemi crittografici come RSA, ma abilita anche la crittografia quantistica (es. QKD - Quantum Key Distribution), teoricamente inviolabile grazie alle leggi della fisica quantistica.

Visita al Computer Quantistico - Università di Napoli

Nonostante ci siano ancora molte sfide tecniche da superare, il calcolo quantistico sta facendo rapidi progressi in quanto esiste già e lo si può trovare all'università di Napoli Federico II nella quale noi stessi, studenti dell'istituto Della Corte Vanvitelli, siamo andati in prima persona accompagnati dalla prof.ssa Maria Emilia Amendola e dal prof. Domenico Montemurro, colui che si è occupato di spiegarci le due parti (hardware e software) del computer quantistico.

Condizioni operative

I computer quantistici richiedono temperature molto basse per mantenere i qubit in uno stato quantistico stabile. Ad esempio, i qubit superconduttori devono essere raffreddati a temperature vicine allo zero assoluto, ovvero -273.15°C. Per questo motivo, un sistema di raffreddamento, come un criostato, che è un dispositivo specializzato nel mantenere queste condizioni di raffreddamento estreme, è fondamentale per il funzionamento di un computer quantistico.

Inoltre non c'è una "durata limitata" del raffreddamento in sé, poiché il sistema deve essere mantenuto a bassa temperatura finché il computer è in funzione. Questo significa che il computer quantistico può operare per diverse ore o giorni, ma la temperatura deve essere costantemente monitorata e regolata.

Database sul Computer Quantistico

Questo database è stato pensato per raccogliere e organizzare dati relativi ai computer quantistici, ovvero, informazioni sugli algoritmi, sui dispositivi quantistici, sugli sviluppi teorici e sui risultati degli esperimenti.

Tabelle principali:

Dispositivi Quantistici

ID Nome Produttore Anno Tipo Numero Tempo Coerenza Descrizione
1 IBM Quantum System One IBM 2019 superconduttore 27 100.5 Primo computer quantistico commerciale di IBM con 27 qubit
2 Sycamore Google 2019 superconduttore 53 75.2 Processore a 53 qubit che ha dimostrato la supremazia quantistica

Algoritmo Quantistico

ID Nome Anno Sviluppatore Compleessità Descrizione Applicazioni
1 Algoritmo di Shor Peter Shor 1994 O((log N)^3) Fattorizzazione di numeri interi in tempo polinomiale Crittografia, rottura RSA
2 Algoritmo di Grover Lov Grover 1996 O(√N) Ricerca in database non ordinati con speedup quadratico Ricerca, ottimizzazione

Esperimenti

ID_esperimento Nome Esperimento ID_dispositivo Data_inizio Data_fine Obiettivo Risultato Pubblicazione
1 Supremazia Quantistica Google 2 2019-10-01 2019-10-31 Dimostrare che un computer quantistico può risolvere un problema insolubile per i computer classici Successo: completato in 200 secondi un calcolo stimato in 10.000 anni per Summit Nature, 2019
2 Simulazione molecolare IBM 1 2020-06-15 2020-07-20 Simulare la struttura elettronica di una piccola molecola Ottenuti risultati promettenti per molecole semplici Physical Review Research, 2020

Esperimenti Algoritmi

ID_esperimenti ID_algoritmo Versione Parametri_configurazione
1 2 v2.1 Numero iterazioni: 20, Ampiezza iniziale: 0.785
2 3 v1.0 Ansatz: UCCSD, Ottimizzatore: COBYLA

Risultati Sperimentali

ID ID_esperimento Metrica Valore Unità_Misura Note
1 1 Tempo esecuzione 200 secondi Tempo per completare il calcolo quantistico
2 1 Fedeltà media 0.9923 scala 0-1 Fedeltà media delle operazioni

Sviluppi Teorici

ID Titolo Anno Autori Campo_Applicazioni Descrizione Impatto
1 Threshold Theorem per la correzione d'errore quantistico 1996 Peter Shor, Andrew Steane Quantum Error Correction Dimostrazione che sotto una certa soglia di errore, la correzione è possibile alto
2 Quantum Supremacy: algoritmi e limiti 2018 John Preskill Teoria della complessità quantistica Definizione formale del concetto di supremazia quantistica alto

Collegamenti Teorici Algoritmi

ID_sviluppo ID_algoritmo Tipo_relazione
1 1 Teoria alla base dell'algoritmo
2 2 Contesto teorico per l'applicazione

Codice PHP dell'Interfaccia Database

Di seguito il listato completo del file PHP che gestisce l'interfaccia con il database quantistico:

            
<?php
// config.php - File di configurazione del database
$host = "localhost";
$username = "root";
$password = "";
$dbname = "computerquantisticodb";

// Connessione al database
$conn = new mysqli($host, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}
?>
<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Quantum Computing Database</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f5f5f5; }
        .container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        h1, h2 { color: #2c3e50; }
        table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
        th, td { padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }
        th { background-color: #3498db; color: white; }
        tr:hover { background-color: #f5f5f5; }
        .form-group { margin-bottom: 15px; }
        label { display: block; margin-bottom: 5px; font-weight: bold; }
        input, select, textarea { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; }
        button { background-color: #3498db; color: white; border: none; padding: 10px 15px; border-radius: 4px; cursor: pointer; }
        button:hover { background-color: #2980b9; }
        .section { margin-bottom: 30px; padding-bottom: 20px; border-bottom: 1px solid #eee; }
        .success { color: green; }
        .error { color: red; }
    </style>
</head>
<body>
    <div class="container">
        <h1>Quantum Computing Database Interface</h1>
        
        <!-- Sezione per visualizzare i dispositivi quantistici -->
        <div class="section">
            <h2>Dispositivi Quantistici</h2>
            <?php
            $sql = "SELECT * FROM Dispositivi_Quantistici";
            $result = $conn->query($sql);
            
            if ($result->num_rows > 0) {
                echo "<table><tr><th>ID</th><th>Nome</th><th>Produttore</th><th>Anno</th><th>Tipo Qubit</th><th>Numero Qubit</th><th>Tempo Coerenza</th></tr>";
                while($row = $result->fetch_assoc()) {
                    echo "<tr>
                            <td>".$row["ID_Dispositivo"]."</td>
                            <td>".$row["Nome"]."</td>
                            <td>".$row["Produttore"]."</td>
                            <td>".$row["Anno_Rilascio"]."</td>
                            <td>".$row["Tipo_Qubit"]."</td>
                            <td>".$row["Numero_Qubit"]."</td>
                            <td>".$row["Tempo"]." µs</td>
                          </tr>";
                }
                echo "</table>";
            } else {
                echo "<p>Nessun dispositivo trovato</p>";
            }
            ?>
        </div>
        
        <!-- Sezione per visualizzare gli algoritmi -->
        <div class="section">
            <h2>Algoritmi Quantistici</h2>
            <?php
            $sql = "SELECT * FROM Algoritmi_Quantistici";
            $result = $conn->query($sql);
            
            if ($result->num_rows > 0) {
                echo "<table><tr><th>ID</th><th>Nome</th><th>Sviluppatore</th><th>Anno</th><th>Complessità</th><th>Applicazioni</th></tr>";
                while($row = $result->fetch_assoc()) {
                    echo "<tr>
                            <td>".$row["ID_Algoritmo"]."</td>
                            <td>".$row["Nome"]."</td>
                            <td>".$row["Sviluppatore"]."</td>
                            <td>".$row["Anno_Sviluppo"]."</td>
                            <td>".$row["Complessità"]."</td>
                            <td>".substr($row["Applicazioni"], 0, 50)."...</td>
                          </tr>";
                }
                echo "</table>";
            } else {
                echo "<p>Nessun algoritmo trovato</p>";
            }
            ?>
        </div>
        
        <!-- Sezione per visualizzare gli esperimenti con join -->
        <div class="section">
            <h2>Esperimenti Recenti</h2>
            <?php
            $sql = "SELECT e.ID_Esperimento, e.Nome, e.Data_Inizio, e.Data_Fine, d.Nome AS Dispositivo, 
                    GROUP_CONCAT(a.Nome SEPARATOR ', ') AS Algoritmi
                    FROM Esperimenti e
                    LEFT JOIN Dispositivi_Quantistici d ON e.ID_Dispositivo = d.ID_Dispositivo
                    LEFT JOIN Esperimenti_Algoritmi ea ON e.ID_Esperimento = ea.ID_Esperimento
                    LEFT JOIN Algoritmi_Quantistici a ON ea.ID_Algoritmo = a.ID_Algoritmo
                    GROUP BY e.ID_Esperimento
                    ORDER BY e.Data_Inizio DESC
                    LIMIT 5";
            $result = $conn->query($sql);
            
            if ($result->num_rows > 0) {
                echo "<table><tr><th>ID</th><th>Nome</th><th>Data Inizio</th><th>Data Fine</th><th>Dispositivo</th><th>Algoritmi</th></tr>";
                while($row = $result->fetch_assoc()) {
                    echo "<tr>
                            <td>".$row["ID_Esperimento"]."</td>
                            <td>".$row["Nome"]."</td>
                            <td>".$row["Data_Inizio"]."</td>
                            <td>".$row["Data_Fine"]."</td>
                            <td>".$row["Dispositivo"]."</td>
                            <td>".$row["Algoritmi"]."</td>
                          </tr>";
                }
                echo "</table>";
            } else {
                echo "<p>Nessun esperimento trovato</p>";
            }
            ?>
        </div>
        
        <!-- Sezione per aggiungere un nuovo esperimento -->
        <div class="section">
            <h2>Aggiungi Nuovo Esperimento</h2>
            <form method="post" action="">
                <div class="form-group">
                    <label for="nome">Nome Esperimento:</label>
                    <input type="text" id="nome" name="nome" required>
                </div>
                
                <div class="form-group">
                    <label for="dispositivo">Dispositivo:</label>
                    <select id="dispositivo" name="dispositivo" required>
                        <option value="">Seleziona un dispositivo</option>
                        <?php
                        $sql = "SELECT ID_Dispositivo, Nome FROM Dispositivi_Quantistici";
                        $result = $conn->query($sql);
                        while($row = $result->fetch_assoc()) {
                            echo "<option value='".$row["ID_Dispositivo"]."'>".$row["Nome"]."</option>";
                        }
                        ?>
                    </select>
                </div>
                
                <div class="form-group">
                    <label for="data_inizio">Data Inizio:</label>
                    <input type="date" id="data_inizio" name="data_inizio" required>
                </div>
                
                <div class="form-group">
                    <label for="data_fine">Data Fine:</label>
                    <input type="date" id="data_fine" name="data_fine">
                </div>
                
                <div class="form-group">
                    <label for="obiettivo">Obiettivo:</label>
                    <textarea id="obiettivo" name="obiettivo" rows="3"></textarea>
                </div>
                
                <button type="submit" name="aggiungi_esperimento">Aggiungi Esperimento</button>
            </form>
            
            <?php
            if (isset($_POST['aggiungi_esperimento'])) {
                $nome = $conn->real_escape_string($_POST['nome']);
                $dispositivo = $conn->real_escape_string($_POST['dispositivo']);
                $data_inizio = $conn->real_escape_string($_POST['data_inizio']);
                $data_fine = $conn->real_escape_string($_POST['data_fine']);
                $obiettivo = $conn->real_escape_string($_POST['obiettivo']);
                
                $sql = "INSERT INTO Esperimenti (Nome, ID_Dispositivo, Data_Inizio, Data_Fine, Obiettivo)
                        VALUES ('$nome', $dispositivo, '$data_inizio', ".($data_fine ? "'$data_fine'" : "NULL").", '$obiettivo')";
                
                if ($conn->query($sql) === TRUE) {
                    echo "<p class='success'>Esperimento aggiunto con successo!</p>";
                } else {
                    echo "<p class='error'>Errore: " . $sql . "<br>" . $conn->error . "</p>";
                }
            }
            ?>
        </div>
        
        <!-- Sezione per statistiche -->
        <div class="section">
            <h2>Statistiche del Database</h2>
            <?php
            $stats = [
                "Dispositivi registrati" => "SELECT COUNT(*) FROM Dispositivi_Quantistici",
                "Algoritmi quantistici" => "SELECT COUNT(*) FROM Algoritmi_Quantistici",
                "Esperimenti completati" => "SELECT COUNT(*) FROM Esperimenti WHERE Data_Fine IS NOT NULL AND Data_Fine < CURDATE()",
                "Qubit totali (somma)" => "SELECT SUM(Numero_Qubit) FROM Dispositivi_Quantistici"
            ];
            
            echo "<table>";
            foreach ($stats as $label => $query) {
                $result = $conn->query($query);
                $value = $result->fetch_row()[0];
                echo "<tr><td><strong>$label</strong></td><td>$value</td></tr>";
            }
            echo "</table>";
            ?>
        </div>
    </div>
</body>
</html>
<?php
$conn->close();
?>