QDK circuit editor (Quantum Development Kit)의 기능으로, 프로젝트 내에서 Q# 양자 회로 다이어그램을 만들고, 편집하고, 시각화할 수 있는 그래픽 인터페이스를 제공합니다. 당신의 Q# 프로그램에서 구축한 회로를 직접 호출 가능한 작업으로 사용할 수 있습니다.
circuit editor에 액세스하는 방법
circuit editor을(를) 시작하려면 다음 단계를 따르세요.
- VS Code에서 새 Q# 프로젝트를 만들거나 기존 프로젝트를 엽니다.
- 확장
.qsc자를 사용하여 새 회로 파일을 만듭니다. - VS Code에서 회로 파일을 엽니다.
기본적으로 circuit editor 뷰로 .qsc 파일을 봅니다.
circuit editor 기능
다음을 사용하여 수행할 수 있는 circuit editor작업은 다음과 같습니다.
| 특징 | 사용 방법 |
|---|---|
| 상태 시각화 도우미 패널 확장 | 상태 시각화를 클릭하여 상태 시각화 도우미 패널을 확장하여 회로 실행에서 결과 양자 상태를 봅니다. 패널은 각 기본 상태에 대한 확률 밀도 및 위상을 보여 옵니다. 도구 상자를 사용하여 회로를 편집하고 패널 업데이트를 실시간으로 볼 수 있습니다. |
| 회로 요소 삽입 | 도구 상자에서 회로 다이어그램으로 요소를 클릭하고 끕니다. |
| 회로 요소 제거 | 회로 다이어그램에서 요소를 클릭하고 끌어옵니다. 또는 요소를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 삭제 를 선택합니다. |
| 회로 요소 이동 | 회로 다이어그램에서 요소를 새 위치로 클릭하고 끌어옵니다. |
| 회로 요소 복사 | Ctrl 키를 누른 채 회로 다이어그램의 새 위치로 요소를 클릭하고 끕니다. |
| 큐비트 추가 | 회로 다이어그램의 새 와이어에 도구 상자의 요소를 배치합니다. 또는 기존 요소를 다이어그램의 새 와이어로 이동합니다. |
| 큐비트 제거 | 회로 다이어그램에서 큐비트 아이콘을 클릭하고 끌어옵니다. 최하위 큐비트는 해당 큐비트에서 모든 회로 요소를 제거하면 자동으로 삭제됩니다. |
| 큐비트 순서 다시 정렬 | 회로 다이어그램에서 큐비트 아이콘을 클릭하고 끕니다. |
| 게이트에 컨트롤 추가 | 게이트 아이콘을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 컨트롤 추가 를 선택한 다음 컨트롤 큐비트 와이어를 선택합니다. |
| 게이트에서 컨트롤 제거 | 게이트 아이콘을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 컨트롤 제거 를 선택한 다음 제거할 컨트롤의 아이콘을 선택합니다. 컨트롤 아이콘을 직접 마우스 오른쪽 단추로 클릭하고 컨트롤 제거를 선택하거나 다이어그램에서 컨트롤 아이콘을 끌 수도 있습니다. |
| 게이트를 인접한 게이트로 변환 | 게이트 아이콘을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 인접 토글을 선택합니다. |
| 게이트에 대한 인수 정의 | 인수가 필요한 게이트를 배치하면 프롬프트 상자가 나타납니다. 프롬프트 상자에 숫자 또는 식을 입력합니다. 인수를 업데이트하려면 게이트를 마우스 오른쪽 단추로 클릭하고 인수 편집을 선택합니다. 또는 게이트 아이콘에서 인수 텍스트를 마우스 왼쪽 단추로 클릭합니다. |
프로젝트 circuit editor에서 회로 Q#를 사용하는 방법
확장자가 .qsc인 회로 파일은 동일한 Q# 프로젝트 내의 Q# 코드에서 참조할 수 있는 작업을 정의합니다. 파일의 .qsc 회로는 다른 Q# 작업처럼 나타나며, 자동 완성, 서명 도움말 및 go-to 정의와 같은 기능을 갖춘 Q# 언어 서비스의 지원을 받습니다.
회로 파일은 파일의 작동 방식 Q# 과 유사하게 파일 이름에서 오는 네임스페이스를 정의합니다.
.qsc 파일의 회로는 같은 네임스페이스 아래에 있는 파일과 동일한 이름의 Q# 작업을 정의합니다. 예를 들어, 파일 Foo.qsc의 회로를 Q# 코드에서 참조하려면, 다음 import 문을 사용하십시오: import Foo.Foo;.
다음 Q# 프로그램은 파일 JointMeasurement.qsc에서 회로를 가져온 다음 작업을 호출 JointMeasurement() 하여 회로를 큐비트 시스템에 적용합니다.
import JointMeasurement.JointMeasurement;
operation Main() : Result[] {
use qs = Qubit[4];
ApplyToEach(H, qs[0..2]);
let results = JointMeasurement(qs);
ResetAll(qs);
results
}