La prossima frontiera della computazione
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.
Utilizzano bit che possono essere solo 0 o 1. I dati sono rappresentati in modo binario e le operazioni vengono eseguite in sequenza.
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.
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.
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.
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.
| 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 | 2019 | superconduttore | 53 | 75.2 | Processore a 53 qubit che ha dimostrato la supremazia quantistica |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| ID_sviluppo | ID_algoritmo | Tipo_relazione |
|---|---|---|
| 1 | 1 | Teoria alla base dell'algoritmo |
| 2 | 2 | Contesto teorico per l'applicazione |
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();
?>