квантовое рассеяние

Тема в разделе "WASM.BEGINNERS", создана пользователем galenkane, 9 ноя 2023.

  1. galenkane

    galenkane Active Member

    Публикаций:
    0
    Регистрация:
    13 янв 2017
    Сообщения:
    302
    >> Квантовое рассеяние рассеивает данные по квантовой памяти, делая дамп невозможным.

    Насколько это реально вообще?
    --- Сообщение объединено, 9 ноя 2023 ---
    Код (Text):
    1. from qiskit import QuantumCircuit, execute, Aer, QuantumRegister
    2. # Задаем размерности квантовых регистров
    3. N = 8  # Длина исходных данных
    4. M = N + 5  # Длина закодированных данных (с учетом кода Хемминга)
    5. qreg = QuantumRegister(M, 'qreg')
    6. circ = QuantumCircuit(qreg)
    7. # Исходные данные
    8. data = 0b01010101
    9. # Рассеяние данных (кодирование)
    10. for i in range(N):
    11.   if (data >> i) & 1 == 1:
    12.     circ.x(qreg[i])  # Применяем X-гейты к кубитам, соответствующим 1 в исходных данных
    13. circ.h(qreg)  # Применяем H-гейты ко всем кубитам для создания суперпозиции
    14. # Моделирование квантового состояния
    15. backend = Aer.get_backend('statevector_simulator')
    16. result = execute(circ, backend).result()
    17. state = result.get_statevector()
    18. # Восстановление данных (декодирование)
    19. encoded = 0
    20. for i in range(N):
    21.   if (data >> i) & 1 == 1:
    22.     encoded += 2 ** i  # Восстанавливаем исходные данные
    23. # Код Хемминга - добавляем синдромные кубиты и X-гейты
    24. circ.cx(qreg[0], qreg[8])
    25. circ.x(qreg[0])
    26. circ.cx(qreg[1], qreg[9])
    27. # Добавляем X-гейты и cx-гейты для остальных синдромных кубитов...
    28. # Декодирование данных (вычисление синдрома)
    29. syndrome = 0
    30. for i in range(N, M):
    31.   if state[2 ** i].real ** 2 > 0.5:
    32.     syndrome += 2 ** (i - N)  # Определяем синдром на основе состояния
    33. corrected = encoded ^ syndrome  # Корректируем данные с использованием синдрома
    34. print(f'Исходные данные: {data}')
    35. print(f'Восстановленные данные: {corrected}')
    чисто демка с чатгпт.
    думаю можно ли с этого что то интересное сделать
    --- Сообщение объединено, 9 ноя 2023 ---
    Для строк это тоже работает

    Код (Text):
    1. from qiskit import QuantumCircuit, execute, Aer, QuantumRegister
    2.  
    3. def encode_and_decode_string(input_str):
    4.     # Задаем размерности квантовых регистров
    5.     N = len(input_str) * 8  # Каждый символ представляется 8 битами
    6.     M = N + 5  # Длина закодированных данных (с учетом кода Хемминга)
    7.  
    8.     qreg = QuantumRegister(M, 'qreg')
    9.     circ = QuantumCircuit(qreg)
    10.  
    11.     # Исходные данные (преобразование строки в бинарную форму)
    12.     data = int(input_str.encode().hex(), 16)
    13.  
    14.     # Рассеяние данных (кодирование)
    15.     for i in range(N):
    16.         if (data >> i) & 1 == 1:
    17.             circ.x(qreg[i])  # Применяем X-гейты к кубитам, соответствующим 1 в исходных данных
    18.  
    19.     circ.h(qreg)  # Применяем H-гейты ко всем кубитам для создания суперпозиции
    20.  
    21.     # Моделирование квантового состояния
    22.     backend = Aer.get_backend('statevector_simulator')
    23.     result = execute(circ, backend).result()
    24.     state = result.get_statevector()
    25.  
    26.     # Восстановление данных (декодирование)
    27.     encoded = 0
    28.     for i in range(N):
    29.         if (data >> i) & 1 == 1:
    30.             encoded += 2 ** i  # Восстанавливаем исходные данные
    31.  
    32.     # Код Хемминга - добавляем синдромные кубиты и X-гейты
    33.     circ.cx(qreg[0], qreg[8])
    34.     circ.x(qreg[0])
    35.     circ.cx(qreg[1], qreg[9])
    36.     # Добавляем X-гейты и cx-гейты для остальных синдромных кубитов...
    37.  
    38.     # Декодирование данных (вычисление синдрома)
    39.     syndrome = 0
    40.     for i in range(N, M):
    41.         if state[2 ** i].real ** 2 > 0.5:
    42.             syndrome += 2 ** (i - N)  # Определяем синдром на основе состояния
    43.  
    44.     corrected = encoded ^ syndrome  # Корректируем данные с использованием синдрома
    45.  
    46.     # Восстанавливаем строку из числа
    47.     output_str = bytes.fromhex(hex(corrected)[2:]).decode('utf-8')
    48.  
    49.     print(f'Исходная строка: {input_str}')
    50.     print(f'Восстановленная строка: {output_str}')
    51.  
    52. # Пример использования
    53. input_string = "qq"  # Входная строка
    54. encode_and_decode_string(input_string)  # Вызываем функцию
    55.  
     

    Вложения:

  2. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    Квантовые рассеяни, понимашь.
    )
     
    UbIvItS нравится это.
  3. Win32Api

    Win32Api Member

    Публикаций:
    0
    Регистрация:
    16 окт 2022
    Сообщения:
    109
    https://dzen.ru/a/YmJS0KfvZlIrBgSS