← homeProgramming (Програмування)

What is NP-complexity?

NP-completeness is a class of problems where finding a solution is extremely difficult, but verifying a given answer can be done quickly. Examples include the traveling salesman problem, optimal scheduling, and crypto...

This content has been automatically translated from Ukrainian.
NP-completeness is a class of problems for which it is very difficult to find a solution, but easy to verify the correctness of an already found one. In other words, if you guess the answer, you can check it quickly, but the actual search process takes an extraordinarily long time.
Examples of NP-complete problems:
  • Traveling salesman problem - how to find the shortest route that visits all cities.
  • Timetable scheduling - to create an optimal schedule so that all teachers, classrooms, and students coincide without conflicts.
  • Subset sum problem - to divide a set of numbers into groups with the same sum.
Where this is important in real life:
  • Logistics and delivery routes.
  • Production planning and schedules.
  • Cryptography and data security.
A simple Ruby example to demonstrate the idea of brute force (using subsets):
# NP-complete problem: finding a subset with the desired sum
numbers = [3, 7, 9, 11, 15]
target = 20

solutions = []

(1..numbers.size).each do |k|
  numbers.combination(k).each do |subset|
    solutions << subset if subset.sum == target
  end
end

puts "Found solutions:"
solutions.each { |s| p s }
Result:
Found solutions:
[9, 11]
Here we can see several options at once. And if we increase the array to 20–25 numbers, the number of checks will increase sharply - this is what combinatorial explosion looks like, which is why such NP-complete problems become practically unsolvable through brute force.

🔥 More posts

All posts
What is a brain stack?
Jul 28, '25 19:37

What is a brain stack?

Brain stack is a model that describes how the brain works in layers: from neurons to self-awarene...

What is integer overflow?
Programming (Програмування)Aug 15, '25 08:28

What is integer overflow?

Integer overflow is the overflow of an integer when the value exceeds the limit of the variable t...

What is a HAR file (HTTP Archive)?
Programming (Програмування)Aug 25, '25 18:23

What is a HAR file (HTTP Archive)?

HAR file (HTTP Archive) is a .har format that stores a log of the browser's interaction with the ...

What is exponential growth?
Sep 16, '25 18:57

What is exponential growth?

Exponential growth is a rapid increase in magnitude, where each subsequent step multiplies the re...

What is factorial complexity?
Programming (Програмування)Sep 16, '25 19:03

What is factorial complexity?

Factorial complexity is the rapid increase in the number of options, where for n elements the pos...

What is ivar in Ruby / Rails?
Programming (Програмування)Oct 19, '25 20:12

What is ivar in Ruby / Rails?

ivar in Ruby is an instance variable, denoted by @. In Rails, it passes data from the controller ...

Main methods of authentication in API
Programming (Програмування)Oct 19, '25 20:26

Main methods of authentication in API

The main methods of authentication in the API on Ruby on Rails: Basic Auth, Token, JWT, and OAuth...

What is ORM and why is it needed?
Programming (Програмування)Oct 26, '25 14:00

What is ORM and why is it needed?

ORM is a technology that allows working with databases through code objects, simplifying developm...