All original content is created in Ukrainian. Not all content has been translated yet. Some posts may only be available in Ukrainian.Learn more

What is NP-complexity?

Post cover: What is NP-complexity?
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.

This post doesn't have any additions from the author yet.

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

What is a brain stack?

What is integer overflow?
Aug 15, '25 08:28

What is integer overflow?

What is a HAR file (HTTP Archive)?
Aug 25, '25 18:23

What is a HAR file (HTTP Archive)?

What is Bubble Sort (algorithm explanation)?
Sep 16, '25 18:42

What is Bubble Sort (algorithm explanation)?

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

What is exponential growth?

What is factorial complexity?
Sep 16, '25 19:03

What is factorial complexity?

Offset vs Cursor Pagination in Rails: what to choose and why
Sep 24, '25 15:22

Offset vs Cursor Pagination in Rails: what to choose and why

What is Row Security in PostgreSQL and why is it important for Rails developers
Oct 4, '25 19:06

What is Row Security in PostgreSQL and why is it important for Rails developers

What is ivar in Ruby / Rails?
Oct 19, '25 20:12

What is ivar in Ruby / Rails?

Main methods of authentication in API
Oct 19, '25 20:26

Main methods of authentication in API

What are the differences between OAuth 1 and OAuth 2
Oct 19, '25 20:34

What are the differences between OAuth 1 and OAuth 2

What is ORM and why is it needed?
Oct 26, '25 14:00

What is ORM and why is it needed?