I was always curious about the unsolved and mysteries in the world.
Through my time in university, while I was surfing through the
world wide web, I stumbled on a Wikipedia page about the unsolved
problems in computer science. Especially, one of the unsolved
problems that caught my eye was the famous computer science P
versus NP problem. A problem which questions the power limitations
computers can have in solving problems. After doing some research around the P
versus NP problem, I stumbled around these abstract symbols I had no clue about
but it looked interesting such as: \[
{\displaystyle {\mathsf {P}}=\bigcup _{k\in \mathbb {N} }{\mathsf {DTIME}}(n^{k})}
\] After that, I never really looked deeper into the
whole P versus NP problem. Until one day, in one of my university
courses during my semester in Spring 2024, in my CSCI 411 - Advanced
Algorithms and Complexity course, the professor briefly mentioned
the famous unsolved P versus NP problem in some lecture. As well,
our professor shared a YouTube video in
lecture about the P
versus NP problem. While in that YouTube video, it mentioned
besides there being P and NP classes of problems, there were other
classes of problems that caught my interest. It caught my interest
due to being related to the P versus NP problem and also gave me
feelings of being an explorer out there in a mysterious universe
trying to discover the different types of planets and galaxies.
Where the planets to me were like the different types of problems
classes out there and my spacecraft was a computer. I also thought
of myself as being like James T. Kirk in the tv show
called Star Trek trying to explore these strange new worlds of
classes of problems. Where James T. Kirk mentions in the
introduction of every Star Trek episode saying, "Space, the final
frontier. These are the voyages of the starship Enterprise. Its
5-year mission: to explore strange new worlds, to seek out new
life and new civilizations, to boldly go where no man has gone
before." Next, after I was done attending my lectures
for the day, I researched a bit and discovered
the computer science field that studied these different types of
problems classes was called computational complexity theory. Having no
experience and no clue how I would take on the big challenge of
studying computational complexity theory, especially it being a heavy
mathematical field with my small knowledge of mathematics, and
other life responsibilities like my university courses, I just took
a break off of trying to self study computational complexity theory.
Until the end of my fall semester 2024 and I was off for winter
break, I took it upon myself and my own interests to
try to learn some computational complexity theory. Finally, one of my
goals while self-studying computational complexity was to create
an interactive map on this website illustrating the inclusion
relationships between some complexity classes that hold relative to all
oracles. Note: More classes may be added in the future. You can interact with the map below. Complexity
class
inclusion refers to the relationship between two
complexity classes where all problems belonging to one class
are also considered to be in the other class, meaning that any
problem solvable within the smaller class can also be solved
within the larger class, typically based on the idea that the
larger class allows for more computational resources like time
or space. Credits given and inspiration from Complexity
Zoo, Complexity Zoology, "Complexity
Zoology" by Robert Joseph Sanders, Jr., and Paperscape. Note:
Refer to Combinatory
Complexity: Operators on Complexity Classes for the operators being used here.
Let A and B be complexity classes, relativized by an oracle X.
How to interact with the diagram:
Click on a node to compare it to other complexity classes. Clicking a node marks it as A, and the coloring
of
each node shows the status of the corresponding class when it is considered as B. The left part of the node
shows the status of A ⊆ B, the right part of the node shows the status of co
⋅ A ⊆ B, and the
middle part of
the node shows the status of Δ
⋅ A ⊆ B (all with respect to every oracle).
Map legend:
Arrows:
⟶ ∀X :
AX ⊆ BX and co ⋅ AX ⊆ BX
⟶ ∀X :
AX ⊆ BX
⟶ ∀X : co
⋅ AX ⊆ BX
⟶ ∀X : Δ
⋅ AX ⊆ BX
Node colors:
∀X :
AX ⊆ BX ?
Proven
Disproven
Open
Unknown