Esegui il tuo primo problema di ricottura con Ocean - Amazon Braket

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui il tuo primo problema di ricottura con Ocean

Le ricotture quantistiche sono computer quantistici speciali progettati per risolvere problemi di ottimizzazione combinatoria. In particolare, le ricotture quantistiche risolvono problemi appartenenti alla classe diOttimizzazione quadratica non vincolata (QUBO).Amazon Braketconsente di programmare ilD-WaveQPU in modo nativo, utilizzandoIl software Ocean di D-Wavetramite ilPlugin Braket-Ocean.Amazon Braketle istanze notebook sono preinstallate con Ocean eBraket-Plugin Ocean.

Nozioni di base su come risolvere il problemaProblema di copertura minima dei vertici (MVC). Ecco la definizione del problema:

Dato un grafico non orientato con un set di vertici e un insieme di bordi, acopertina del verticeè un sottoinsieme dei vertici (nodi) in modo tale che ogni bordo del grafico sia incidente ad almeno un vertice nel sottoinsieme. Il problema della copertura minima dei vertici cerca di trovare una copertura con un numero minimo di vertici nel sottoinsieme. Ossia, in un grafico come questo:


            grafico

L'obiettivo è colorare i nodi in rosso in modo che ogni bordo tocchi almeno un nodo rosso. E vuoi farlo con meno vernice possibile. La soluzione ottimale è dipingere il nodo centrale di rosso, come mostrato nella figura che segue.


            grafico a colori

Come risolvere un problema del genere conD-Wave’s 2000QQPU

Per iniziare, importa le seguenti dipendenze e specifica una posizione S3.

Nota

Inserisci il nome effettivo del bucket esistente dove mostra il seguente esempioexample-bucketcome nome bucket. Nomi dei bucketAmazon Braketiniziare sempre conamazon-braket-seguito da altri caratteri identificativi che aggiungi.

# import relevant modules import boto3 from braket.ocean_plugin import BraketSampler, BraketDWaveSampler import networkx as nx import dwave_networkx as dnx from dwave.system.composites import EmbeddingComposite # Please enter any S3 bucket starting with 'amazon-braket-' in your account in the code below my_bucket = f"amazon-braket-Your-Bucket-Name" # the name of the bucket my_prefix = "Your-Folder-Name" # the name of the folder in the bucket s3_folder = (my_bucket, my_prefix)

Ora passiamo all'impostazione del campionatore. Quindi utilizzareEmbeddingCompositeper incorporare automaticamente un problema in un campionatore strutturato, ad esempioD-Wavesistema.

# set sampler using BraketSampler sampler = BraketSampler(s3_folder,'arn:aws:braket:::device/qpu/d-wave/DW_2000Q_6') # or alternatively using BraketDWaveSampler sampler = BraketDWaveSampler(s3_folder,'arn:aws:braket:::device/qpu/d-wave/DW_2000Q_6') # EmbeddingComposite automatically maps the problem to the structure of the solver. embedded_sampler = EmbeddingComposite(sampler)

È possibile creare il grafico dalla famiglia di randomGrafici Erdoes-Renyi. Tale grafico può essere generato utilizzando ilnetworkxlibreria. Come input, impostare il numero desiderato di vertici e bordi che collegano coppie di vertici.

# setup Erdos Renyi graph # 5 nodes n = 5 # 10 edges m = 10 # generate graph graph = nx.gnm_random_graph(n, m, seed=42)

Infine, esegui il problemaD-Wavee stampa i risultati.

# run the problem on D-Wave using BraketSampler result = dnx.min_vertex_cover(graph, embedded_sampler, resultFormat="HISTOGRAM") # or alternatively using BraketDWaveSampler result = dnx.min_vertex_cover(graph, embedded_sampler, answer_mode="histogram") print('Result to MVC problem:', result) print('Size of the vertex cover:', len(result))
Result to MVC problem: [0, 1, 3, 4] Size of the vertex cover: 4

Si noti che il risultato del problema MVC è una lista contenente i vertici [0, 1, 3, 4]. Questi vertici formano una copertura minima dei vertici in modo che il sottoinsieme possa raggiungere ogni bordo del grafico.