ทฤษฎีความซับซ้อนในการคำนวณ
ทฤษฎีความซับซ้อนในการคำนวณ (English: Computational Complexity Theory) เป็นสาขาหนึ่งของทฤษฎีการคำนวณ ที่มุ่งเน้นไปในการวิเคราะห์เวลาและเนื้อที่สำหรับการแก้ปัญหาหนึ่ง ๆ โดยปกติแล้วคำว่า "เวลา" ที่เราพูดถึงนั้น จะเป็นการนับจำนวนขั้นตอนที่ใช้ในการแก้ปัญหา ส่วนในเรื่องของ "เนื้อที่" เราจะพิจารณาเนื้อที่ ๆ ใช้ในการทำงานเท่านั้น (ไม่นับเนื้อที่ ๆ ใช้ในการเก็บข้อมูลป้อนเข้า). ในบางกรณีเราอาจจะสนใจการวิเคราะห์ปริมาณอื่น ๆ ที่นอกเหนือไปจากพื้นที่กับเวลา ยกตัวอย่างเช่น ในการประมวลผลแบบขนาน เราอาจจะวิเคราะห์ว่าต้องใช้หน่วยประมวลผลกี่ตัวในการแก้ปัญหาที่กำหนด. ทฤษฎีความซับซ้อนต่างจาก ทฤษฎีการคำนวณได้ ที่จะเน้นไปในการวิเคราะห์ว่าปัญหาสามารถแก้ได้หรือไม่ โดยไม่สนใจทรัพยากรที่ใช้ในการแก้ปัญหา
ตรรกศาสตร์คลุมเครือ
ตัวอย่างของการใช้งานที่ซับซ้อนขึ้น ก็คือ การใช้งานตรรกศาสตร์คลุมเครือใน การแก้ความผิดพลาด (error correction) ประสิทธิภาพสูง เพื่อเพิ่มประสิทธิภาพของการรับข้อมูลผ่านช่องสัญญาณแบนด์วิดท์จำกัด ที่ข้อมูลถูกรบกวนด้วยสัญญาณรบกวน โดยการใช้รหัสเทอร์โบ (en:turbo code) ส่วนต้นของภาคถอดรหัส จะวัดค่าความควรจะเป็น ของค่าบิตในสายบิตที่ส่งมากจากภาคส่ง (ว่าควรจะเป็น 0 หรือ 1) ค่าความควรจะเป็นอาจแบ่งเป็น 256 ระดับ ระหว่างระดับสูงสุดหมายถึง "ค่าควรจะเป็น 1 แน่นอน" และต่ำสุดหมายถึง "ค่าควรจะเป็น 0 แน่นอน" ตัวถอดรหัสสองตัวอาจวิเคราะห์ข้อมูลที่รับมาพร้อมกัน ได้เป็นค่าความควรจะเป็นที่ต่างกัน ตัวถอดรหัสแต่ละตัวสามารถใช้ค่าความควรจะเป็นที่ได้จากตัวถอดรหัสอื่นเข้าช่วยในการตีความ จนได้ข้อสรุปค่าที่ควรจะเป็นมากที่สุด