X의 함수로 Y 풀기 : http://www.wolframalpha.com/input/?i=x%5E5%2B+xy+-+y%5E2+-+y%5E3는
y(x) := INSERT_EQUATION_HERE
any((y in setX) for y in y(x) for x in setX)
이 걸리는 O (| X |), 즉 선형 시간. 당신이 any
기능 또는 목록 조작과 언어를 사용하지 않는 경우
또는, 당신의 솔루션은 좀 더 자세한 수 있습니다
for x in setX:
possibleYs = solveForY(x)
for y in possibleYs:
if y in setX:
return SOLUTION:(x,y)
return NO_SOLUTION
당신은 실제로 2D를 해결할 필요가 없습니다 내가 위에 보여준 것과 같은 다항식. 대신, 집합의 각 x를 고려할 수 있습니다. 이것은 x를 고치고 y에 다항식을줍니다. 그런 다음 일정 시간 내에 다항식을 풀 수 있습니다. 예를 들어 x = 0이면 y^2 == y^3에 대한 3 개의 해를 찾을 수 있습니다. 만약 x = 1이라면 2-y^2 == y^3에 대한 3 개의 해를 구할 수 있습니다. x = -0.52라면 해답은 http://en.wikipedia.org/wiki/Cubic_function#General_formula_of_roots
더 일반적인 문제 :
임의의 다항식을 고려하는 경우이 방법은 min (max_x_degree, max_y_degree) < 5 경우에만 O (1) 효율을 제공 할 수 있습니다.이는 Galois theory에서 입증 된 것처럼 특정 폐쇄 형 솔루션을 사용하는 유일한 다항식은 차수가 4 이하인 유일한 다항식입니다. 그리고이 문제에서 가장 높은 차수의 변수를 상수로 바꿀 수 있습니다.
이는 O (1) 효율이 수를 늘리면 분 (max_x_degree, max_y_degree) < 5.
것 또한 더 흥미로운 얻을 경우, 다른 방법으로 얻을 수없는 말은 아니다 변수의.
X는 유한한지, 어떤 형태로 주어 졌는지에 따라 많은 영향을받습니다. – jogojapan