چنل پایتون | جنگو | برنامه نویسی وب سایت | HTML & CSS & JS
441 subscribers
295 photos
142 videos
41 files
212 links
ارتباط با مدیر:

@Amir_1234_ka
Download Telegram
Forwarded from Python3
آموزش الگوریتم‌های کوانتومی – پارت ۷: گیت‌های چندکیوبیتی و درهم‌تنیدگی (Entanglement)

هدف پارت هفتم
در این پارت، با گیت‌های چندکیوبیتی و مفهوم درهم‌تنیدگی آشنا می‌شویم. درهم‌تنیدگی یکی از ویژگی‌های منحصر به‌فرد سیستم‌های کوانتومی است که به‌طور گسترده‌ای در الگوریتم‌های کوانتومی مانند الگوریتم شُر و الگوریتم گریور استفاده می‌شود. این ویژگی به ما این امکان را می‌دهد که اطلاعات را به‌طور همزمان در چندین کیوبیت ذخیره کرده و پردازش کنیم.



درهم‌تنیدگی (Entanglement)
درهم‌تنیدگی به وضعیتی گفته می‌شود که در آن دو یا چند کیوبیت به‌گونه‌ای با یکدیگر ارتباط دارند که تغییر وضعیت یک کیوبیت به‌طور آنی وضعیت دیگر کیوبیت‌ها را تحت تأثیر قرار می‌دهد. این ویژگی باعث می‌شود که اطلاعات در سیستم‌های کوانتومی به‌طور بسیار کارآمدتر از سیستم‌های کلاسیک پردازش شوند.

برای درک بهتر این موضوع، بیایید یک نمونه ساده از درهم‌تنیدگی را بررسی کنیم.



گیت‌های چندکیوبیتی و درهم‌تنیدگی در Qiskit
یکی از ابزارهای اصلی برای ایجاد درهم‌تنیدگی در سیستم‌های کوانتومی استفاده از گیت CNOT (Controlled-NOT) است. این گیت دو کیوبیت را به‌گونه‌ای به هم متصل می‌کند که وضعیت یکی از کیوبیت‌ها (کیوبیت کنترل) می‌تواند وضعیت دیگری (کیوبیت هدف) را تغییر دهد.

در اینجا یک نمونه کد برای درهم‌تنیدگی دو کیوبیت با استفاده از گیت‌های کوانتومی آورده شده است:

from qiskit import QuantumCircuit, Aer, execute

# ایجاد یک مدار کوانتومی با 2 کیوبیت
qc = QuantumCircuit(2)

# قرار دادن گیت هادامارد روی کیوبیت اول (Q0)
qc.h(0)

# قرار دادن گیت CNOT (کنترل-هدف) با کیوبیت اول به عنوان کنترل و کیوبیت دوم به عنوان هدف
qc.cx(0, 1)

# اندازه‌گیری کیوبیت‌ها
qc.measure_all()

# شبیه‌سازی مدار
backend = Aer.get_backend('aer_simulator')
result = execute(qc, backend, shots=1024).result()

# نمایش نتایج
counts = result.get_counts(qc)
print(counts)



توضیح کد
1. ایجاد مدار کوانتومی:
ابتدا یک مدار کوانتومی با دو کیوبیت ساخته می‌شود.

2. گیت هادامارد (Hadamard):
گیت هادامارد را روی کیوبیت اول (Q0) اعمال می‌کنیم. این گیت وضعیت کیوبیت را از حالت پایه (|0⟩) به حالت سوپراپوزیشن تغییر می‌دهد، به‌طوری‌که احتمال پیدا شدن کیوبیت در حالت 0 یا 1 برابر است.

3. گیت CNOT:
گیت CNOT که یک گیت کنترل-هدف است، روی کیوبیت‌های Q0 (کنترل) و Q1 (هدف) اعمال می‌شود. این گیت وضعیت کیوبیت هدف (Q1) را فقط در صورتی تغییر می‌دهد که کیوبیت کنترل (Q0) در حالت 1 باشد.

4. اندازه‌گیری:
پس از ایجاد درهم‌تنیدگی بین کیوبیت‌ها، هر دو کیوبیت را اندازه‌گیری می‌کنیم.

5. شبیه‌سازی مدار:
مدار را با استفاده از شبیه‌ساز Qiskit اجرا کرده و نتایج اندازه‌گیری را مشاهده می‌کنیم.



نتیجه اجرای کد
اگر این کد را اجرا کنید، نتایج به‌صورت زیر خواهد بود:

{'00': 512, '11': 512}

این نشان‌دهنده آن است که کیوبیت‌ها در دو حالت درهم‌تنیده 00 یا 11 قرار دارند، و هر دو حالت با احتمال برابر مشاهده می‌شوند.



توضیح درهم‌تنیدگی
در این حالت، کیوبیت‌های Q0 و Q1 درهم‌تنیده هستند. این بدین معنی است که وضعیت یکی از کیوبیت‌ها به‌طور آنی وضعیت دیگری را تحت تأثیر قرار می‌دهد. حتی اگر این کیوبیت‌ها از هم فاصله زیادی داشته باشند، وضعیت آن‌ها همچنان به‌طور کوانتومی به‌هم مرتبط است.



تمرین برای شما:
1. یک مدار مشابه بسازید که در آن از گیت‌های مختلفی مانند گیت‌های Toffoli یا گیت‌های کنترل شده دیگر استفاده کنید.
2. تأثیر درهم‌تنیدگی در الگوریتم‌های مختلف کوانتومی را بررسی کرده و توضیح دهید که چگونه این ویژگی به بهبود عملکرد الگوریتم‌های کوانتومی کمک می‌کند.



پارت بعدی:
در پارت ۸، با الگوریتم گریور (Grover's Algorithm) آشنا خواهیم شد و نحوه استفاده از درهم‌تنیدگی و گیت‌های چندکیوبیتی را در جستجوهای کوانتومی بررسی خواهیم کرد.

ادامه دارد...

برای بیشتر یاد گرفتن اینجا کلیک کن
3👍1
Forwarded from Python3
آموزش الگوریتم‌های کوانتومی – پارت ۸: آشنایی با گیت‌های چندکیوبیتی و entanglement

هدف پارت هشتم
در این بخش، با گیت‌های چندکیوبیتی و مفهوم entanglement (درهم‌تنیدگی) آشنا می‌شویم که یکی از ویژگی‌های اساسی محاسبات کوانتومی است. این مفاهیم نقش کلیدی در ایجاد و پیاده‌سازی الگوریتم‌های کوانتومی دارند.



گیت‌های چندکیوبیتی
گیت‌های چندکیوبیتی، برخلاف گیت‌های تک‌کیوبیتی که تنها روی یک کیوبیت اعمال می‌شوند، روی دو یا چند کیوبیت به صورت همزمان اثر می‌گذارند. این گیت‌ها امکان ایجاد ارتباط بین کیوبیت‌ها را فراهم کرده و پایه‌گذار مفهوم entanglement هستند.

گیت‌های رایج دوکیوبیتی
1. گیت CNOT (Controlled-NOT)
این گیت روی دو کیوبیت، به نام‌های کنترل و هدف، اعمال می‌شود. اگر مقدار کیوبیت کنترل برابر 1 باشد، عملگر NOT روی کیوبیت هدف اعمال می‌شود. جدول صحت این گیت به صورت زیر است:

ورودی | خروجی
00 → 00
01 → 01
10 → 11
11 → 10

2. گیت SWAP
این گیت مقدار دو کیوبیت را با هم جابجا می‌کند. اگر ورودی دو کیوبیت a و b باشد، خروجی آن به صورت b و a خواهد بود.



Entanglement (درهم‌تنیدگی)
درهم‌تنیدگی حالتی است که در آن کیوبیت‌ها به گونه‌ای به هم مرتبط می‌شوند که وضعیت یک کیوبیت به طور مستقیم با وضعیت کیوبیت دیگر وابسته است، حتی اگر فاصله زیادی بین آن‌ها وجود داشته باشد. این ویژگی یکی از تفاوت‌های اصلی بین محاسبات کلاسیک و کوانتومی است.

ایجاد درهم‌تنیدگی با استفاده از گیت هادامارد و CNOT
یک روش ساده برای ایجاد entanglement بین دو کیوبیت به صورت زیر است:
1. اعمال گیت هادامارد روی کیوبیت اول برای ایجاد حالت ابرموقعیت.
2. اعمال گیت CNOT با کیوبیت اول به عنوان کنترل و کیوبیت دوم به عنوان هدف.

این عملیات حالت entانگل شده زیر را ایجاد می‌کند:
|ψ⟩ = (1 / √2) (|00⟩ + |11⟩)

این بدان معناست که اگر کیوبیت اول را اندازه‌گیری کرده و مقدار آن 0 باشد، کیوبیت دوم نیز 0 خواهد بود و اگر کیوبیت اول برابر 1 باشد، کیوبیت دوم نیز 1 خواهد بود.



مثال از پیاده‌سازی entanglement در Qiskit
در ادامه، یک کد ساده برای ایجاد درهم‌تنیدگی بین دو کیوبیت را مشاهده می‌کنید:

from qiskit import QuantumCircuit, Aer, assemble
from qiskit.visualization import plot_histogram

# ایجاد مدار کوانتومی با 2 کیوبیت
qc = QuantumCircuit(2)

# اعمال گیت هادامارد روی کیوبیت اول
qc.h(0)

# اعمال گیت CNOT با کیوبیت 0 به عنوان کنترل و کیوبیت 1 به عنوان هدف
qc.cx(0, 1)

# اندازه‌گیری
qc.measure_all()

# اجرای مدار
backend = Aer.get_backend('qasm_simulator')
qobj = assemble(qc)
result = backend.run(qobj).result()
counts = result.get_counts()

# نمایش هیستوگرام نتایج
plot_histogram(counts)



توضیح کد
1. ابتدا یک مدار کوانتومی با دو کیوبیت تعریف شده است.
2. گیت هادامارد روی کیوبیت اول اعمال شده تا حالت ابرموقعیت ایجاد شود.
3. گیت CNOT روی دو کیوبیت اعمال شده تا entanglement ایجاد شود.
4. در نهایت، کیوبیت‌ها اندازه‌گیری شده و نتیجه اجرا به صورت هیستوگرام نمایش داده می‌شود.



نتیجه اجرای کد
خروجی به صورت یک هیستوگرام خواهد بود که نشان می‌دهد حالات 00 و 11 با احتمال مساوی ظاهر می‌شوند، در حالی که حالات 01 و 10 اصلاً دیده نمی‌شوند. این نشان‌دهنده ایجاد موفقیت‌آمیز درهم‌تنیدگی بین دو کیوبیت است.



پارت بعدی:
در پارت ۹، با الگوریتم دیچک (Deutsch Algorithm) آشنا خواهیم شد که یکی از اولین الگوریتم‌های کوانتومی است و نشان می‌دهد چگونه محاسبات کوانتومی می‌توانند از محاسبات کلاسیک سریع‌تر باشند.

ادامه دارد...

برای بیشتر یاد گرفتن اینجا کلیک کن
3👍1
Forwarded from Python3
آموزش الگوریتم‌های کوانتومی – پارت ۹: گیت‌های چندکیوبیتی و درهم‌تنیدگی (Entanglement)

هدف پارت نهم
در این پارت، به بررسی گیت‌های چندکیوبیتی و مفهوم درهم‌تنیدگی (Entanglement) می‌پردازیم که یکی از مهم‌ترین ویژگی‌های محاسبات کوانتومی است. درهم‌تنیدگی به ما این امکان را می‌دهد که با استفاده از گیت‌های خاص، حالت‌هایی ایجاد کنیم که بین چند کیوبیت به‌طور وابسته عمل می‌کنند.



گیت CNOT
یکی از مهم‌ترین گیت‌های دوکیوبیتی، گیت CNOT است که یک گیت کنترلی است. این گیت به این شکل عمل می‌کند:
- اگر کیوبیت کنترلی برابر با 0 باشد، کیوبیت هدف تغییر نمی‌کند.
- اگر کیوبیت کنترلی برابر با 1 باشد، کیوبیت هدف NOT می‌شود (حالتش برعکس می‌شود).

به زبان ساده:
CNOT |00⟩ = |00⟩  
CNOT |01⟩ = |01⟩
CNOT |10⟩ = |11⟩
CNOT |11⟩ = |10⟩



ایجاد درهم‌تنیدگی با گیت CNOT و H
حالا می‌خواهیم با استفاده از گیت هادامارد (H) و گیت CNOT یک حالت درهم‌تنیده ایجاد کنیم. حالت درهم‌تنیده معروف Bell به شکل زیر ساخته می‌شود:

1. ابتدا هر دو کیوبیت در حالت اولیه |0⟩ هستند.
2. یک گیت هادامارد روی کیوبیت اول اعمال می‌کنیم:
|ψ⟩ = H|0⟩ = 1/√2 * (|0⟩ + |1⟩)

3. سپس یک گیت CNOT روی هر دو کیوبیت اعمال می‌کنیم که کیوبیت اول به‌عنوان کنترلی عمل می‌کند:
|ψ⟩ = 1/√2 * (|00⟩ + |11⟩)

این حالت درهم‌تنیدگی کامل دو کیوبیت را نشان می‌دهد، به این معنی که اگر یکی از کیوبیت‌ها را اندازه‌گیری کنیم، کیوبیت دیگر نیز به‌طور آنی وضعیت متناظر را خواهد داشت.



مثال پیاده‌سازی در Qiskit
در اینجا، یک مدار ساده برای ایجاد حالت Bell را پیاده‌سازی می‌کنیم:

from qiskit import QuantumCircuit, Aer, execute

# ایجاد یک مدار کوانتومی با 2 کیوبیت و 2 کلاسیک
qc = QuantumCircuit(2, 2)

# اعمال گیت هادامارد روی کیوبیت 0
qc.h(0)

# اعمال گیت CNOT با کیوبیت 0 به‌عنوان کنترل و کیوبیت 1 به‌عنوان هدف
qc.cx(0, 1)

# اندازه‌گیری کیوبیت‌ها
qc.measure([0, 1], [0, 1])

# اجرای مدار روی شبیه‌ساز
backend = Aer.get_backend('qasm_simulator')
result = execute(qc, backend, shots=1000).result()

# نمایش نتیجه
counts = result.get_counts()
print("نتایج اندازه‌گیری:", counts)



توضیح کد
1. ایجاد مدار:
مدار شامل دو کیوبیت و دو بیت کلاسیک است که برای ذخیره نتایج اندازه‌گیری استفاده می‌شوند.
2. اعمال گیت هادامارد:
گیت هادامارد روی کیوبیت 0 اعمال شده و آن را در حالت سوپریپوزیشن قرار می‌دهد.
3. اعمال گیت CNOT:
این گیت کیوبیت 1 را با توجه به وضعیت کیوبیت 0 تغییر می‌دهد و حالت درهم‌تنیده ایجاد می‌کند.
4. اندازه‌گیری:
کیوبیت‌ها اندازه‌گیری شده و نتایج آن‌ها در بیت‌های کلاسیک ذخیره می‌شود.
5. نمایش نتیجه:
نتیجه شامل مقادیر اندازه‌گیری‌شده خواهد بود که به‌طور معمول شامل حالت‌های 00 و 11 است.



نتیجه اجرای کد
خروجی ممکن است به شکل زیر باشد:
نتایج اندازه‌گیری: {'00': 512, '11': 488}

این خروجی نشان می‌دهد که مدار کوانتومی به‌درستی حالت Bell را ایجاد کرده است.



تمرین برای شما:
1. مدار را به‌گونه‌ای تغییر دهید که به جای ایجاد حالت |00⟩ + |11⟩، حالت |01⟩ + |10⟩ ایجاد کند.
2. توضیح دهید که چگونه درهم‌تنیدگی در الگوریتم‌های کوانتومی مانند الگوریتم شُر و الگوریتم گروور استفاده می‌شود.



پارت بعدی:
در پارت ۱۰، به بررسی تحلیل فوریه کوانتومی (QFT) و کاربرد آن در الگوریتم‌های کوانتومی می‌پردازیم.

ادامه دارد...

برای بیشتر یاد گرفتن اینجا کلیک کن
4👍1
This media is not supported in your browser
VIEW IN TELEGRAM
کاربران ویندوز ۱۱ نگاه کنن😳

💻میدونستی میتونی توی ویندوز ۱۱ چندین
دسکتاپ داشته باشی؟؟🖥

کانال رو دنبال داشته باشید❤️
🔥4👍1
import os
import sys

def get_hidden_password(prompt="Enter your password: "):
password = ""
sys.stdout.write(prompt)
sys.stdout.flush()
while True:
char = sys.stdin.read(1)
if char == "\n":
break
elif char == "\b":
password = password[:-1]
else:
password += char
sys.stdout.write("*")
sys.stdout.flush()
return password

def main():
correct_password = "Amir_123_ka"

while True:
user_password = get_hidden_password()

if user_password == correct_password:
print("\nWelcome!")
break
else:
print("\nIncorrect password, please try again.")

if name == "main":
main()

برنامه پسورد با پایتون
🔥5
در حال ساخت برنامه paint
امید بدید😅❤️
6👍1
و تمامممممممممممم
😁4
هر کس میتونه مثل برنامه من درست کنه و توی پیوی با کداش بفرسته
@Amir_123_ka
Media is too big
VIEW IN TELEGRAM
اینم برنامه paint که با پایتون نوشتم
4
اگر میخواید یکم دوستاتون رو اذیت کنید کافیه کد زیر رو در قالب برنامه ویندوزی با Tkinter در بیارید😁:

(صفحه نمایش رو هر 1 ثانیه میچرخونه)
import time
import rotatescreen
import rotatescreen as rs

display = rs.get_primary_display()
listOfAngels = [90,180,270,0]

while True:
for x in listOfAngels:
display.rotate_to(x)
time.sleep(1)

از کتابخانه time و rotatescreen استفاده شده که برای دومی نیازه از طریق pip نصب کنید:
pip install rotate-screen

```
display = rs.get_primary_display()
کارش اینه میاد صفحه نمایش رو ایجاد میکنه

و بعد در listOfAngels زوایا مشخص شده که اولین مورد: 90 درجه عمودی،180 چرخش معکوس،،270درجه عمودی در سمت چپ و 0 در حالت افقی اولیه

یه حلقه while تعریف شده و تا زمانی که شرطش برقرار هست حلقه for داخلش بی نهایت تکرار میشه

display.rotate_to(x)
`
صفحه نمایش رو به زاویه x درجه میچرخونه که x بر اساس اون پیمایشی که از طریق حلقه for بر روی لیست داره هستش و time.sleep(1) هر 1ثانیه اجرا میشه😁
6
This media is not supported in your browser
VIEW IN TELEGRAM
🔹۶ نکته ی مهم برای برنامه نویس های پایتون 🔹
5
کتابخونه whois در پایتون
👍4