Skip to main content
IBM Quantum Platform

Kipu Quantum Iskay Quantum Optimizer API 참조

  • Qiskit Functions

    Qiskit Functions — 파트너 기관들이 개발한 사전 구축형 도구 — 소프트웨어 개발 워크플로의 일부를 추상화하여, 대규모 알고리즘 탐색 및 애플리케이션 개발을 간소화하고 가속화합니다. 이 Qiskit 함수에 대한 가이드를 보려면 클릭하세요.


입력

problem

유형: Dict[str, float]

QUBO/HUBO 또는 스핀 형식으로 정립된 최적화 문제의 계수들. 문제 사양에 대한 자세한 내용은 ‘허용되는 문제 형식’을 참조하십시오.

  • 필수: Yes
  • 예:{"()": -21.0, "(0, 4)": 0.5,"(0, 2)": 0.5,"(0, 1)": 0.5,"(1, 3)": 0.5}

problem_type

유형: str

문제 계수가 이진 형식(QUBO/HUBO)인지 스핀 형식인지 지정하십시오. 두 가지 가능성은 또는 "spin" 입니다 "binary". 문제 사양에 대한 자세한 내용은 ‘허용되는 문제 형식’을 참조하십시오.

  • 필수: Yes
  • 예:"spin"

backend_name

유형: str

쿼리를 실행할 백엔드 이름

  • 필수: Yes
  • 예:"ibm_fez"

옵션

유형: Dict[str, Any]

촬영 횟수 등 하드웨어 제출을 처리하기 위한 옵션들. 이 함수의 옵션은 중첩된 사전 형태로 지정됩니다. 옵션의 전체 목록과 기본값을 확인하세요.

  • 필수: 아니오
  • 예:{"shots": 5000, "num_iterations": 3, "use_session": True, "seed_transpiler": 42}
허용되는 문제 형식

problem_type``problem 인수는 다음과 같은 형태의 최적화 문제를 표현한다

min(x1,x2,,xn)DC(x1,x2,,xn)\begin{align} \min_{(x_1, x_2, \ldots, x_n) \in D} C(x_1, x_2, \ldots, x_n) \nonumber \end{align}

여기서,

C(x1,...,xn)=a+ibixi+i,jci,jxixj+...+k1,...,kmgk1,...,kmxk1...xkmC(x_1, ... , x_n) = a + \sum_{i} b_i x_i + \sum_{i, j} c_{i, j} x_i x_j + ... + \sum_{k_1, ..., k_m} g_{k_1, ..., k_m} x_{k_1} ... x_{k_m}
  • 를 선택하면 비용 함수가 problem_type = "binary"``binary 형식임을 지정하게 되며, 이는 D={0,1}nD = \{0, 1\}^{n} 와 같이 비용 함수가 QUBO/HUBO 형식으로 작성되었음을 의미합니다.
  • 반면, 를 선택하면 problem_type = "spin", 비용 함수는 이징(Ising) 형식으로 표현되며, 이때 D={1,1}nD = \{-1, 1\}^{n}.

문제의 계수는 다음과 같이 딕셔너리에 저장해야 합니다:

{"()":a,"(i,)":bi,"(i, j)":ci,j,"(k1,...,km)":gk1,...,km,}\begin{align} \nonumber &\texttt{\{} \\ \nonumber &\texttt{"()"}&: \quad &a, \\ \nonumber &\texttt{"(i,)"}&: \quad &b_i, \\ \nonumber &\texttt{"(i, j)"}&: \quad &c_{i, j}, \\ \nonumber &\quad \vdots \\ \nonumber &\texttt{"(} k_1, ..., k_m \texttt{)"} &: \quad &g_{k_1, ..., k_m}, \\ \nonumber &\texttt{\}} \end{align}
  • 사전의 키는 중복되지 않는 정수로 구성된 유효한 튜플을 포함하는 문자열이어야 한다는 점에 유의하십시오.

옵션 목록

Iskay는 선택적 매개변수를 통해 세부 조정 기능을 제공합니다. 기본 설정은 대부분의 문제에 잘 적용되지만, 특정 요구 사항에 맞춰 동작을 사용자 정의할 수도 있습니다:

shots

유형: `int`

기본값: 10000

반복당 양자 측정 횟수 (수치가 높을수록 정확도가 높음)

num_iterations

유형: `int`

기본값: 10

알고리즘 반복 횟수 (반복 횟수를 늘리면 해의 정확도가 향상될 수 있음)

use_session

유형: `bool`

기본값: True

대기 시간을 줄이려면 IBM 세션을 이용하세요

seed_transpiler

유형: `int`

기본값: None

재현 가능한 양자 회로 컴파일을 위한 설정.

시드 최적화 : 기본적으로 None 로 설정되어 seed_transpiler 있음을 유의하십시오. 이를 통해 트랜스파일러의 자동 최적화 프로세스가 활성화됩니다. 이 None 경우 시스템은 여러 시드(seed)를 사용하여 테스트를 시작하고, 각 트랜스파일레이션 단계에서 max_trials 매개변수의 성능을 최대한 활용하여 가장 우수한 회로 깊이를 생성하는 시드를 선택합니다.

direct_qubit_mapping

유형: `bool`

기본값: False

가상 큐비트를 물리적 큐비트 수에 직접 매핑한다

job_tags

유형: `List[str]`

기본값: None

업무 추적을 위한 사용자 정의 태그

preprocessing_level

유형: `int`

기본값: 0

문제 전처리 강도 (0-3).

전처리 단계 (0-3) : 현재 하드웨어의 코히어런스 타임에 맞출 수 없는 대규모 문제에 특히 중요합니다. 전처리 단계가 높을수록 문제 변환 과정에서 근사화를 통해 회로 깊이를 더 얕게 만들 수 있습니다:

  • 레벨 0 : 정확한, 더 긴 회로
  • 1단계 : 정확도와 근사치 간의 균형이 적절하며, 각도가 하위 10%에 속하는 게이트만 제외함
  • 2단계 : 약간 더 정교한 근사법으로, 각도가 하위 20분위수에 속하는 게이트를 제거하고 트랜스파일레이션에 approximation_degree=0.95 를 사용한다
  • 레벨 3 : 최대 근사화 레벨로, 하위 30분위수에 속하는 게이트를 제거하고 트랜스파일레이션에 approximation_degree=0.90 를 사용함
postprocessing_level

유형: `int`

기본값: 2

해법 정교화 수준 (0-2).

후처리 수준 (0-2) : 국소 탐색을 여러 번 반복하여 비트 반전 오류를 보정하는 고전적 최적화 방식을 어느 정도 적용할지 제어합니다:

  • 레벨 0 : 1회 통과
  • 레벨 1 : 2회 통과
  • 2단계 : 3회 통과
transpilation_level

유형: `int`

기본값: 0

트랜스파일러 최적화 실험 (0-5).

트랜스파일링 수준 (0-5) : 양자 회로 컴파일을 위한 고급 트랜스파일러 최적화 시도를 제어합니다. 이로 인해 일반적인 오버헤드가 증가할 수 있으며, 경우에 따라 회로 깊이는 변하지 않을 수도 있습니다. 일반적으로 기본값을 2 사용하면 회로 크기가 가장 작아지며 처리 속도도 비교적 빠릅니다.

  • 레벨 0 : 분해된 DCQO 회로의 최적화 (배치, 배선, 스케줄링)
  • 1단계 : 최적화 및 PauliEvolutionGate 이후 분해된 DCQO 회로 ( max_trials=10 )
  • 2단계 : 최적화 및 PauliEvolutionGate 분해된 DCQO 회로 ( max_trials=15 )
  • 3단계 : 최적화 및 PauliEvolutionGate 분해된 DCQO 회로 ( max_trials=20 )
  • 4단계 : 최적화 PauliEvolutionGate 및 분해된 DCQO 회로 ( max_trials=25 )
  • 5단계 : 최적화 PauliEvolutionGate 및 분해된 DCQO 회로 ( max_trials=50 )
transpile_only

유형: `bool`

기본값: False

전체 양자 알고리즘을 실행하지 않고 회로 최적화를 분석하고자 하는 사용자들이 이용할 수 있습니다. 회로 분석, 심도 최적화 연구, 그리고 본격적인 실행에 들어가기 전 트랜스필레이션 효과를 파악하는 데 유용합니다.

트랜스파일레이션 단계의 성능

의 값을 max_trials 높여 의 개수를 늘리면 transpilation_level 트랜스파일링 시간이 필연적으로 증가하지만, 이것이 항상 최종 회로에 변화를 주는 것은 아닙니다. 이는 구체적인 회로 구조와 복잡성에 크게 좌우됩니다. 그러나 일부 회로나 문제의 경우, 10회 시도(레벨 1)와 50회 시도(레벨 5) 사이의 차이가 극명할 수 있으므로, 이러한 매개변수를 탐구하는 것이 해결책을 성공적으로 찾는 열쇠가 될 수 있습니다.


출력

유형: `Dict[str, Any]`

솔루션 및 메타데이터. 구조는 선택한 옵션에 transpile_only 따라 달라집니다.

결과 사전

결과 사전의 구조는 실행 모드에 따라 달라집니다:

solution

유형: `Dict[str, int]`

키가 숫자 순서로 정렬된 변수 인덱스(문자열 형식)이고, 값이 해당 변수의 값(스핀 문제의 경우 1/-1, 이진 문제의 경우 1/0)인 정렬된 맵 구조의 솔루션입니다.

  • 모드: 표준
  • 예:{'0': -1, '1': -1, '2': -1, '3': 1, '4': 1}

solution_info

유형: `Dict[str, Any]`

솔루션에 대한 상세 정보.

  • 모드: 표준
  • 예:{'bitstring': '11100', 'cost': -13.8, 'seed_transpiler': 42, 'mapping': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}}
  • 기본 실행 : 선택적 매개변수가 지정된 transpile_only=False 경우, 다음의 사전 참조.
bitstring

유형: `str`

해의 원시 비트열 표현.

cost

유형: `float`

해당 솔루션과 관련된 비용 대비 에너지 효율.

seed_transpiler

유형: `int`

이 결과를 생성한 트랜스파일러에 사용된 난수 시드.

mapping

유형: `Dict[int, int]`

계산에 사용된 원래의 큐비트-변수 매핑.

qpu_time

유형: `float`, optional

QPU 실행 시간(초).

변수 매핑 관련 참고 사항
  • 사전은 solution 솔루션 비트스트링에서 가져오며, 변수 인덱싱에는 객체가 mapping 사용됩니다.
  • 11,011 \rightarrow -1, \quad 0 \rightarrow 1 을 할당할 problem_type=spin 때.
  • 솔루션 사전의 키는 문자열로 변환되어 숫자 순서대로 정렬된 변수 인덱스입니다.

prob_type

유형: `str`

최적화 문제의 유형 (spin 또는 binary)

  • 모드: 표준
  • 예:'spin'

transpilation_info

유형: `Dict[str, Any]`

회로 분석 및 트랜스파일레이션 세부 사항.

  • 모드: 트랜스파일 전용
  • 예:{'best_seed': 42, 'transpilation_time_seconds': 50.06, 'transpiled_circuit': {'depth': 576, 'gate_count': 4177, 'num_qubits': 156, 'width': 176, 'operations': {'sx': 1325, 'rx': 891, 'cz': 783, 'rz': 650, 'rzz': 466, 'x': 42, 'measure': 20}}}
  • 전사 분석 : 선택적 매개변수가 transpile_only=True주어지면, 다음 사전을 참조하십시오:
best_seed

유형: `int`

전사 과정에서 발견된 최적의 시드입니다.

transpilation_time_seconds

유형: `float`

트랜스파일링 과정에 소요된 시간.

transpiled_circuit

유형: `Dict`

다음 내용을 포함하는 회로 분석:

  • depth

유형: `int`

회로 두께 (층 수)

  • gate_count

유형: `int`

회로의 게이트 총 개수.

  • num_qubits

유형: `int`

사용된 큐비트 수.

  • width

유형: `int`

회로 폭.

  • operations

유형: `Dict[str, int]`

사용된 각 게이트 유형의 개수.

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.