Spaces:
Configuration error
Configuration error
File size: 2,418 Bytes
3dc2617 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# Funci贸n para visualizar la comparaci贸n de algoritmos cu谩nticos
import matplotlib.pyplot as plt
import numpy as np
def plot_comparison(results):
"""
Visualiza los resultados de la comparaci贸n de algoritmos cu谩nticos para
diferentes modelos de ruido y niveles de riesgo de colisi贸n.
Args:
results: Diccionario con los resultados de cada algoritmo
"""
# Configurar el estilo de la visualizaci贸n
plt.style.use('seaborn-v0_8-darkgrid')
# Crear figura con subplots para cada nivel de riesgo
fig, axes = plt.subplots(1, 3, figsize=(18, 6))
fig.suptitle('Comparaci贸n de Algoritmos Cu谩nticos para Detecci贸n de Colisiones', fontsize=16)
# T铆tulos para cada subplot
risk_titles = ['Riesgo Alto', 'Riesgo Medio', 'Riesgo Bajo']
# Colores para cada algoritmo
colors = {'vqe': 'blue', 'grover': 'green', 'qaoa': 'red', 'basic': 'purple'}
# Etiquetas para los modelos de ruido
noise_labels = ['Sin Ruido', 'Ruido Bajo', 'Ruido Alto']
# Posiciones en el eje X
x = np.arange(len(noise_labels))
width = 0.2 # Ancho de las barras
# Iterar sobre cada nivel de riesgo (alto, medio, bajo)
for i, risk_idx in enumerate([0, 1, 2]): # 0=alto, 1=medio, 2=bajo
ax = axes[i]
ax.set_title(risk_titles[i])
ax.set_ylim(0, 1.0) # Probabilidad entre 0 y 1
ax.set_ylabel('Probabilidad de Colisi贸n')
ax.set_xticks(x)
ax.set_xticklabels(noise_labels)
# Offset para cada algoritmo
offsets = [-width*1.5, -width/2, width/2, width*1.5]
# Iterar sobre cada algoritmo
for j, (algo, algo_results) in enumerate(results.items()):
# Extraer probabilidades para este nivel de riesgo
probs = [result[risk_idx + 1] for result in algo_results] # +1 porque el 铆ndice 0 es el nombre del modelo de ruido
# Dibujar barras
ax.bar(x + offsets[j], probs, width, label=algo.upper(), color=colors[algo], alpha=0.7)
# A帽adir leyenda en el 煤ltimo subplot
handles, labels = axes[2].get_legend_handles_labels()
fig.legend(handles, labels, loc='lower center', ncol=len(results), bbox_to_anchor=(0.5, 0.01))
plt.tight_layout(rect=[0, 0.05, 1, 0.95])
plt.savefig('quantum_algorithms_comparison.png', dpi=300, bbox_inches='tight')
plt.show() |