크기가 커질수록 더 쉽게 문제가 있습니까?


62

이것은 우스운 질문 일지 모르지만 입력의 크기가 커질수록 실제로 더 쉽게 문제가 발생할 수 있습니까? 나는 실제적인 문제가 이런 것이 아닌지 의심하지만, 우리는이 속성을 가진 퇴보적인 문제를 발명 할 수있다. 예를 들어, 크기가 커지거나 기괴한 방식으로 동작함에 따라 "자체 해결"을 시작할 수 있습니다.


7
이 속성에서 염두에 두어야 할 한 가지 실질적인 문제는 "지정된 n 해시, 하나 이상의 해시 크래킹"과 같이 공식화 될 때 무염 암호 해시 크래킹입니다. 크래킹 속도는 n과 선형으로 확장되므로 실행 시간은 1 / n에 비례합니다. 크래킹이 확률적이고 일정 시간 상한이 없기 때문에 실제로 결정적인 시간을 할당 할 수 없다는 점을 제외하고는.
amon

1
@amon 실행 시간은 1 / n 처럼 확장되지 않습니다 1/n. 그것은 시간이 소요 n 읽기 단지 n 당신이 입력으로 주어 졌어 해시!
David Richerby

3
절대적 또는 상대적으로 더 쉬운 의미입니까? 어떤 비용 측정을 허용합니까? 비용을 엄격히 낮추어야합니까, 아니면 어느 시점부터 비 증가입니까?
Raphael

2
@DavidRicherby이 예제에서는 절대 비용에 대해 언급하지 않는 한 입력을 읽는 비용을 무시하는 것이 합법적입니다. 대신 입력과 함께 속도가 선형으로 증가합니다. 따라서 입력을 읽는 비용을 고려하더라도 n • T (1)> T (n)입니다. 즉,이 문제의 경우 문제를 나눌 수 있지만 입력을 분할하지 않고 한 번에 큰 입력을 해결하는 것이 더 쉽습니다. 나는 모든 n에 대해 T (n)> T (n + 1)을 말하는 것이 아닙니다.
amon

4
"입력이 질문 인 몇 가지 문제와 답변에 대한 힌트가 많이있는 문제" 는 아직 작동하지 않습니다. 길이 의 가장 어려운 입력은 모든 비트를 사용 하여 질문을하고 힌트를 제공하지 않는 입력입니다. 힌트가 많은 짧은 질문을 쉽게 처리 할 수 ​​있다고해서 최악의 실행 시간이 좋은 것은 아닙니다. nn
David Richerby

답변:


39

아니요, 가능하지 않습니다. 적어도 점근 적 의미가 아니므로 로 영원히 더 쉽게 계속 유지하기 위해 문제가 필요한 경우 .n

하자 이러한 문제 해결을위한 최적의 주행 시간이 입력의 크기이다. 실행 시간은 알고리즘에 의해 실행되는 명령 수의 개수이므로 음이 아닌 정수 여야합니다. 즉, 모든 대해 입니다 . 이제 함수 하면 엄격하게 단조 감소하는 함수는 없습니다. ( 이 무엇이든 , 유한해야합니다 라고 말하십시오 . 그러나 가 단조롭게 엄격하게 감소하기 때문에 및T(n)nT(n)NnT:NNT(0)T(0)=cTT(c)0T(c+1)1비슷한 이유로, 적으로 엄격하게 감소하는 함수는 없습니다 : 이 존재하는 곳에서 실행 시간 함수 이 없음을 유사하게 증명할 수 있습니다. 이 모든 , 는 단조롭게 엄격히 감소합니다 (이러한 기능은 결국 부정적이어야 함).T(n)n0nn0T(n)

따라서 실행 시간이 음이 아닌 정수 여야한다는 간단한 이유로 이러한 문제는 존재할 수 없습니다.


이 답변은 결정 론적 알고리즘 (즉, 최악의 경우 실행 시간) 에만 적용됩니다 . 예상 실행 시간이 엄격하게 단조롭게 감소하는 무작위 알고리즘의 가능성을 배제하지는 않습니다. 그런 알고리즘이 존재할 수 있는지 모르겠습니다. 이 관찰에 대해 Beni Cherniavsky-Paskin에게 감사드립니다 .


9
이것은 좋은 증거이지만 전제에 동의하지 않습니다. 엄격하게 단조 감소하는 런타임을 요구하는 대신, 문제는 a (b)와 a (b)가 존재하는 경우 T (a)> T (b), 즉 엄격하게 단조 적으로 감소하는 함수가 더 합리적으로 요구 될 수 있습니다. 그렇다면 적절한 정수 함수를 찾을 수 있습니다. 그러나 왜 정수? 나는 실행 시간이 지시 횟수가 아닌 시간을 나타내었고 (Touring 머신 제외) T 표현식은 log () 또는 정수가 아닌 지수와 같은 정수가 아닌 연산을 사용할 수 있다는 인상을 받았습니다.
amon

2
@amon "실행 시간은 명령 카운트가 아닌 시간을 나타냅니다."절대 아닙니다. 실행 시간은 항상 명령 수입니다. 구현 세부 사항에 매우 의존하기 때문에 추론 할 수없는 것은 없습니다.
David Richerby

3
의문의 여지가있는 것처럼 의 비용 함수를 어떻게 배제하는지 알 수 없습니다 . 이제 "small" 경우 이지만 이므로 문제는 비교적 쉬워집니다. (물론 절대 비용은 무증상으로 증가합니다). T(n)=n2(1+ϵ)n+nT(n)nT(n)n2n
Raphael

2
@Raphael, 입니다 쉽게 얻지 못하고 문제 : 로 커질수록 커질수록, 그래서 같은 문제가 어려워 얻을 수 커질수록, 한 번 충분히 크다. 나는 내 대답의 첫 문장에서 문제가 영원히 더 쉬워 질 수 없다고 진술했다. 물론 문제는 조금 더 쉬워 질 수 있지만 ( 은 경우 줄어들 수 있습니다 ), 그러나 영원히 더 쉬워지는 것은 아닙니다. T(n)nT(n)nnnT(n)nc
DW

1
정수 시간의 경우에도 무작위 알고리즘의 경우 예상 시간 (또는 다른 분포 측정)은 소수 일 수 있으며 점차적으로 위에서 일정하게 접근 할 수 있습니다. [이것은 실제로 그러한 문제가 존재한다는 것을 의미하는 것은 아니며, "그런 함수 가 존재 하지 않는다 "는 말만으로는 충분하지 않다.]T
Beni Cherniavsky-Paskin

25

귀하의 질문에 대한 답변은 아니지만 Boyer-Moore 문자열 검색 알고리즘 이 가깝습니다. Robert Moore는 자신의 웹 페이지에서 알고리즘에 대해 말합니다.

우리의 알고리즘은 패턴이 길수록 알고리즘의 속도가 빠르다는 독특한 특성을 가지고 있습니다.

다시 말해, 일반적으로 알고리즘은 소스 문자열에서 대상 문자열의 인스턴스를 검색하고 고정 된 소스 문자열을 검색하면 대상 문자열이 길수록 알고리즘 실행 속도가 빨라집니다.


10
아마도 패턴은 문제의 크기가 아니라 검색되는 문자열의 길이입니다. 위의 David Richerby의 의견에서와 같이 패턴 길이는 문제 자체보다 문제를 해결하는 방법 (문자열 검색에 대한 정보)에 대한 힌트에 가깝 습니다 (패턴이 특정 길이의 문자열과 일치하는지 확인) .)
Kevin

4
@Kevin이 문장은 길이 텍스트 에서 길이 의 패턴을 검색하는 것이 길이 의 패턴을 검색하는 것보다 빠르다고 제안합니다 . 이러한 고정 관계 입력 (즉, 문자열 쌍)을 보면 Rick이 질문에 대한 적절한 대답을 제공했다고 생각합니다 (고전적이고 점근 적 의미가 아닌 경우). nnlogn
Raphael

10

분명히 순수한 수학적, 순수한 CS 알고리즘 관점에서 이것은 불가능합니다. 그러나 실제로 프로젝트를 확장 할 때 실제 사용자에게 직관적이지 않은 여러 실제 사례가 있습니다.

길 찾기 : 길 찾기 가 길수록 길어질 수 있습니다. 예를 들어, Google지도에서 3000 마일 서쪽으로가는 길을 알려주려면 서해안으로 운전하여 크로스 컨트리 운전 지침을받을 수 있습니다. 그러나 서쪽으로 6000 마일을 가고 싶다면 NYC에서 홋카이도까지 비행기를 타면 훨씬 간단한 지시가 나옵니다. 교통, 도로, 날씨 등을 통합하는 크로스 컨트리 경로를 제공하는 것은 알고리즘 적으로 어렵지만, 비행기를 타고 데이터베이스에서 항공편을 찾는 것은 비교적 간단합니다. 난이도와 거리의 ASCII 그래프 :

           |     /
           |    /
Difficulty |   /                  ____-------
           |  /           ____----
           | /    ____----
            ---------------------------------
                       Distance

렌더링 : 한면 의 렌더링과 1000면의 렌더링을 원한다고 가정하십시오. 이것은 빌보드 광고를위한 것이므로 두 최종 이미지는 10000 x 5000 픽셀이어야합니다. 한면을 사실적으로 렌더링하는 것은 어려울 것입니다. 수천 개의 픽셀 해상도에서 강력한 기계를 사용해야합니다. 그러나 1000 개의면으로 구성된 군중의 경우 각면에서 10 개의 픽셀 만 있으면되며 쉽게 복제 할 수 있습니다! 랩톱에서 1000 개의 얼굴을 렌더링 할 수도 있지만 10000px의 사실적인 얼굴을 렌더링하는 데 시간이 오래 걸리고 강력한 시스템이 필요합니다. 난이도 vs. 렌더링 된 객체의 ASCII 그래프로, n 크기의 이미지로 n 개의 객체를 렌더링하는 데 어려움이 얼마나 빠르지 만 느리게 반환되는지 보여줍니다.

           | -    
           |- -                     _________
Difficulty |   --      ______-------            
           |     ------      
           |       
            ---------------------------------
                        Objects

하드웨어 제어 : 하드웨어를 사용하는 것이 훨씬 쉬워집니다. "모터 X 1도 이동"은 어렵거나 불가능하며 "모터 X 322도 이동"에 대해 다루지 않아도되는 모든 종류의 문제를 처리해야합니다.

짧은 기간의 작업 : 매초마다 항목 X를 (매우 적은 시간) 켜고 싶다고 가정하십시오. X가 실행되는 시간을 늘리면 덜 복잡한 소프트웨어와 하드웨어가 필요합니다.


"방향"예제에서 계산 문제와 인스턴스가 무엇인지 정확하게 설명하십시오. 6k 마일 예제가 더 큰 인스턴스이거나 무언가의 쉬운 부분의 예라는 것은 분명하지 않습니다 (예를 들어, 큰 그래프로 연결된 그래프와 하나의 고립 된 정점을 제공하면 일반적으로 가장 짧은 경로를 묻는 것은 "어려운"그러나 고립 된 정점에서 어느 곳 으로든지 가장 짧은 경로를 요구하는 것은 사소한 일입니다). 다시 한 번, 렌더링 예제에서 실제 계산 문제는 무엇입니까? 복잡성을 측정하는 사례는 무엇입니까?
David Richerby

렌더링 예제는 동일한 문제의 인스턴스가 아닌 것 같습니다. 첫 번째는 단일 이미지를 렌더링하는 것입니다. 두 번째는 많은 작은 이미지를 렌더링 한 다음 해당 이미지의 여러 복사본을 일부 영역에 붙여 넣는 것입니다.
David Richerby

매개 변수를 여행하는 wrt는 두 도시의 이름이고 n은 인코딩 할 문자 수라고 생각합니다.
emory

3

경우가 있습니다. 성공 기준이 단일 답변을 찾으려고하지 않고 데이터의 함수 인 경우입니다. 예를 들어, 신뢰 구간으로 결과가 표현되는 통계 프로세스가 더 쉬워 질 수 있습니다.

내가 생각하는 한 가지 특별한 경우는 유체 흐름과 같이 불연속 동작에서 연속 동작으로 전환되는 문제입니다. 작은 문제를 어느 정도의 오류 내로 해결하려면 모든 개별 상호 작용을 모델링해야하며,이 경우 수퍼 컴퓨터가 필요할 수 있습니다. 연속적인 동작은 종종 관련 오류 한계를 벗어난 결과를 산출하지 않고 단순화를 허용합니다.


2

정보학에 대한 우리의 철학은 문제를 더 많이 읽을수록 문제를 해결하는 것이기 때문에 문제는 흥미롭고 유용합니다. 그러나 사실, 전형적인 방식으로 제시되는 (어려운) 대부분의 문제는 "쉬운"방식으로 쉽게 표현 될 수 있습니다. DW의 반응을 아는 것조차도 (쉬운 것이 더 빠르다는 의미는 아니라는 것을 잘못 생각하면 "느리게"를 의미합니다. 따라서 음수 시간을 찾을 필요가 없으며 점근 적 시간을 찾기 위해 노력해야합니다).

하나를 찾는 요령은 힌트로 솔루션의 일부를 항목으로 넣고 문제의 항목을 상수 매개 변수와 같이 고려하는 것입니다.

예 : 런던과 파리를 잇는 가장 먼 길은 프랑스와 영국 도시를 두 번 방문하지 않고 다른 나라를 방문하지 않는 방법은 무엇입니까? 고려, 당신은 애쉬 포드 전에 버밍엄, 베르사유 전에 올리언즈, 리 무주 전에 라로 셸 등을 가야합니다 ...

긴 항목에 대한이 문제는 짧은 항목에 비해 더 쉬울 것입니다.

사용 예 : 머신이 관리하는 게임 게임을 상상해보십시오. 컴퓨터의 IA는 더 많은 힌트를 찾기 위해 게임에서 더 많은 것을 탐색해야하는지 또는 지금 결정해야 할 최선의 결정을 추론 할 시간인지 결정해야합니다. .


2
귀하의 예가 작동하지 않습니다. 힌트가 너무 많아 힌트가 그래프 정점의 선형 순서를 결정하기 때문에 큰 인스턴스는 실제로 쉽습니다. 그러나 힌트가 거의없는 큰 그래프를 제공하기 때문에 큰 인스턴스는 일반적인 해밀턴 경로 문제만큼 어렵습니다. 따라서이 문제를 해결하는 알고리즘의 최악의 실행 시간은 최소한 해밀턴 경로에 대한 최상의 알고리즘의 최악의 실행 시간보다 "나쁜"것처럼 보이지 않습니다.
David Richerby

@David, 귀하의 답변이 완전히 틀 렸습니다 : 1. 입력 항목은 그래프가 아닙니다 : 큰 그래프는 PARAMETER입니다. 따라서 hamiltonian 문제는 상수 (매우 크지 만 상수)로 변환됩니다. 2. 항목이 문제의 해결책이므로, 더 크면 힌트의 조합 폭발을 제공합니다. 하나의 힌트를 입력하면 도움이되고, 두 개의 힌트는 이중을, 세 개의 힌트는 4 배에 가깝습니다 ... 가능한 해결책을 제거하기 때문입니다. 그래서 이것은 해밀턴이 아니 었습니다. 이것은 특정 그래프의 해결책이며 문제는 해결책의 일부와 관련이 있습니다.
Juan Manuel Dato

더 큰 인스턴스가 어떤 의미에서는 "더 쉬워"면서 여러분의 주장이 흥미 롭다고 생각하지만 원래 질문에 대한 대답은 궁극적으로 "아니오"라고 생각합니다. 그래프가 유한하기 때문에 가능한 많은 힌트 만 있습니다. 따라서 모든 인스턴스는 일정 시간 (예 : 조회 테이블 사용)으로 해결할 수 있습니다. (점근 법) 컴퓨터 과학보기에서 더 큰 인스턴스가 (직관적으로) 더 쉬워 지더라도 모든 인스턴스는 동일하게 어렵습니다 (일정 시간에 해결 가능).
Tom van der Zanden

@Tom, 나는 복잡성에 대한 당신의 고려가 일정하다는 것에 동의하지만, 문제는 우리가 새로운 힌트를 받아들이는 방법입니다. -사실이기 때문입니다. 긴 항목은 더 쉬운 문제를 의미합니다. 그래서 우리는 그런 식으로 일할 수 없습니다 ... 나는 내 책을 추천하지만 평판이 없습니다 ...
Juan Manuel Dato

@TomvanderZanden 실제로, "힌트"목록에 중복이있을 수 있으므로 일정한 시간 안에 해결할 수 없습니다. 테이블 조회를 수행하기 전에 중복 제거 하려면 시간 과 같은 것이 필요 합니다. 그래서, 맞춰봐? 더 큰 인스턴스를 해결하는 것은 여전히 ​​어렵습니다. nlogn
David Richerby

1

암호에 대해 알고있는 정보를 입력 한 다음 해독하려고하는 프로그램을 고려하십시오. 나는 이것이 당신이 원하는 것을한다고 생각합니다. 예를 들면 다음과 같습니다.

  • 모든 기호와 길이에 상관없이 단어에 대한 입력 없음-> 무차별 균열
  • 암호 길이-> 모든 단어를 해당 길이의 단어로 강제 실행
  • 포함 된 심볼-> 확인할 심볼 목록 축소
  • ...
  • 다중 발생 및 길이를 포함하는 포함 된 기호-> 순열 만 계산
  • 올바른 순서로 모든 기호-> 기본적으로 자체 해결

이와 같은 문제는 입력 크기와 반대이기 때문에 이것이 속임수라고 덧붙여 야합니다. 추상화의 한 계층을 제외하고 입력이 없으면 입력 크기가 크고 (모든 기호 및 단어 길이 확인) 시작에 올바른 암호를 입력하면 작다고 말할 수 있습니다.

그래서 그것은 당신이 얼마나 많은 추상화를 허용하는지에 달려 있습니다.


2
작동하지 않습니다. 첫째, 잘 정의 된 계산 문제는 아닙니다. 입력 한 내용이 "암호가 8 자"라고 가정하면 암호는 고유하게 결정되지 않습니다. 둘째, 해시를 포함하고 해시와 일치하는 암호를 요청하여 잘 정의되어 있다고 가정하십시오. 이 경우 가장 어려운 인스턴스는 추가 정보가없는 "해시 : [ 비트 해시]" 형식의 인스턴스 입니다. 이러한 인스턴스는 입력 길이가 길어질수록 해결하기가 쉽지 않습니다. 기하 급수적으로 어려워집니다. b
David Richerby

0

사실, 데이터가 증가함에 따라 점점 작아지는 문제가 있습니다. 내 응용 프로그램 중 하나는 치즈와 같은 특정 제품의 속성을 기록합니다. 속성은 예를 들어 CheeseType, Brand, Country, Area, MilkType 등입니다. 매월 정도마다 그 기간 동안 시장에 출시 된 새로운 치즈 목록과 속성이 표시됩니다. 이제 이러한 속성은 인간 그룹에 의해 손으로 입력됩니다. 일부는 오타를 만들거나 모든 속성의 가치를 모릅니다.

데이터베이스에서 검색 할 때 이러한 속성을 기반으로 치즈의 맛을 통계에서 예측하려고합니다. 무슨 일이 일어나는가는 각 속성마다 값의 범위로 끝납니다. 일부는 유효합니다. 일부는 유효하지 않습니다. 이러한 잘못된 데이터를 제거하거나 수정하는 것은 데이터가 충분한 경우에만 가능합니다. 희귀하지만 유효한 값을 제거하지 않고 실제 값과 노이즈를 차별화하는 것입니다.

당신이 상상할 수 있듯이, 작은 볼륨으로, 물건을 올바르게 고치기에는 소음이 너무 중요합니다. 체다 5 개, 브리 1 개, 브리 1 개, 체다 1 개가있는 경우 어느 것이 정확하고 오타인지 어떻게 알 수 있습니까? 볼륨이 높을수록 오타가 ​​매우 낮아지는 경향이 있지만 드문 값은 몇 가지 중요한 증분을 가져와 소음에서 벗어날 수 있습니다 (경험이 뒷받침합니다). 이 경우, 예를 들어 50000 Cheddar, 3000 Brie, 5 Bri, 15 Chedar를 상상할 수 있습니다.

예, 충분한 데이터가 있으면 일부 문제가 결국 스스로 해결됩니다.


1
이것은 일반적인 이유로 실패합니다. 큰 입력은 사람들이 여러 종류의 치즈에 대해 알려주는 것이 아니라 일부 종류의 치즈에 대해 알려주는 것이 아니라 일부는 잘못된 철자를 입력하는 것일 수 있습니다. 또한 "쉬운"이 "결과에 대한 높은 신뢰도"로 해석된다는 것이 확실하지 않습니다.
David Richerby

이것은 실제 문제입니다 (이미 두 번 가졌음). 적은 양의 데이터로는 해결할 수 없습니다. 볼륨이 높아짐에 따라 잘못된 값과 좋은 값을 구분하기가 더 쉬워집니다. "크기가 커질수록 더 쉬워지는 문제가 있습니까?"라는 질문에 대답 할 가치가 있습니다. 얼마나 많은 종류의 치즈가 나오는지는 중요하지 않으며, 결국 충분한 양으로 오타보다 더 많은 "적중"을 가질 것입니다. 이것은 수학이 아니라 cs .stackexchange이므로 문제가 다르므로 문제를 해결하는 것이 결과에 대한 신뢰를 높이는 것입니다.
chris

이것도 TV 쇼 번호 의 전제가 아닌가? 또는 적어도 몇 가지 에피소드-나는 수학자가 남자가 문제를 해결하는 데 사용하는 알고리즘이 더 큰 데이터 세트에서 더 효과적이라고 언급하는 장면을 구체적으로 기억합니다.
Dan Henderson

2
"더 효과적" "="쉬워진다.
David Richerby

-1

NP- 완전 문제 3-SAT를 고려하십시오. x_i = true / false 형식의 입력을 제공하여 문제를 계속해서 증가 시키면 개별 분리를 2 변수 절로 변환하여 결정적으로 P 인 2-SAT 문제를 만들거나 단순히 참 / 거짓 대답.

x_i = true / false 입력 (이러한 입력이 여러 번 제공되거나 모순되는 입력)에 중복이있는 경우 입력을 쉽게 정렬하고 중복 값을 무시하거나 값이 상충하는 경우 오류를보고 할 수 있습니다.

어쨌든, 이것은 입력 수가 증가함에 따라 해결하기 쉬운 '현실적인'문제를 나타냅니다. '쉬운'측면은 NP- 완전 문제를 P 문제로 변환하는 것입니다. 정렬만으로 문제를 강제하는 것보다 시간이 오래 걸리도록 어리석은 입력을 제공하여 시스템을 게임 할 수 있습니다.

이제 우리가 T (0) (위의 답변에서 DW의 표기법을 사용함)을 기꺼이 받아 들일 수 있다면 정말 멋진 시나리오가 될 것입니다. 예를 들어 T (0)은 Turing 's Halting Problem을 해결하는 것과 같습니다. 더 많은 입력을 추가하는 것이 해결할 수있는 문제로 변환 될 수있는 문제를 고안 할 수 있다면 금을 have습니다. 문제를 해결할 수있는 문제로 무조건 변환하는 것만으로는 충분하지 않습니다. 이는 문제를 강제하는 것만큼이나 나쁘기 때문입니다.


1
이러한 특정 입력이 더 쉬워집니다. 그러나 모든 가능한 입력을 고려할 때 절을 더 추가하면 일반적으로 3SAT가 상당히 어려워집니다. 어려운 입력은 이러한 "힌트"절이없는 입력입니다. 일반 입력을 허용하지 않는 경우 허용하는 입력을 정확하게 명시해야합니다.
David Richerby

첫째, 더 많은 입력을 추가하면 실행 시간이 늘어날 수 있다는 데 동의합니다. 본질적으로 위와 같은 것을 말합니다. 둘째, 기존 3-SAT를 취하고 x_i = true / false 형식의 입력 만 추가한다고 분명히 밝힙니다. 나는 이것이 충분히 명확하다고 생각하며 더 이상 설명을 할 필요가 없습니다. 나는 당신이 내가 쓴 것에 대한 가장 잘못 해석 된 해석을 형성하기 위해 어려움을 겪고 있다고 생각합니다. 스스로 고민하지 마십시오.
v vv cvvcv

1
아뇨, 진심 으로요 어떤 계산 문제를 해결하고 있습니까? 계산 문제는 문자열 집합의 멤버 자격을 결정하는 것입니다 (코딩에 대한 성가심을 피하기 위해 수식 집합이라고합시다). 긴 수식이 세트에 있는지 여부를 결정하는 것이 짧은 수식이 세트에 있다고 결정하는 것보다 쉽다고 주장하는 수식 세트는 무엇입니까? 정확한 정보를 얻으려고하면 귀하의 주장이 무너질 것입니다.
David Richerby

'내 주장'에 대한 이해를 분명히 할 수 있습니까? 이것을 정확하게하려고하면 인터넷 대역폭 낭비를 멈출 것입니다.
v vv cvvcv

저는 컴퓨터 과학자이며 마음을 읽는 사람이 아닙니다. 당신의 주장을 정확하게하는 것은 나의 것이 아니라 당신의 일입니다.
David Richerby

-1

질문은 "입력의 크기가 커짐에 따라 실제로 더 쉽게 문제를 일으킬 수 있는가?"라고 묻습니다. 입력이 알고리즘에서 작업을 수행하는 데 사용할 자원 인 경우 어떻게됩니까? 리소스가 많을수록 좋습니다. 아래는 직원이 많을수록 좋은 예입니다.

1) 두 가지 입력이 제공됩니다.
i) 업계 직원 수. 이것은 자연수이며 주 입력 입니다. ii) 산업에 관한 정보. 있다 노동자가 수행해야하는 작업을하는 레이블, B, C, D는 ... 있습니다 작업 사이를 전환 할 직원을 가능하게하는 작업을 연결하는 곳. 여기에는 0, 1, 2, 3 ...이라는 레이블이 붙어 있습니다. 주어진 정보는 경로로 구성된 간단한 유 방향 그래프입니다 (예 : A-1, 1-2, 2-B, C-3 ...). 루트 비용은 1입니다.t pn
tp

2) 문제 :
첫 번째 작업 A부터 시작하여 직원 수가 명인 경우 모든 작업을 방문하기 위해 직원이 사용할 수있는 최적의 전략을 찾아야합니다. 작업을 두 번 이상 방문 할 수 있습니다. 작업간에 경로를 찾지 않으면 작업간에 전환 할 수 없습니다. 작업 A에서 B 로의 경로는 B에서 A 로의 경로와 무관합니다.n

3) 출력 :
출력은 직원이 수행해야 할 작업 사이의 경로입니다. 각 경로는 직원 수와 관련이 있습니다. 예를 들면 다음과 같습니다.

직원 이 A-B (전달 경로) 직원 이 A-C (전달 경로) B-D ( 직원) (전달 경로) D-B ( 직원) (역방향 경로) B-E ( 직원) (정방향 경로), N 2 N 3 N 4 N 5n1
n2
n3
n4
n5

4) 가능한 해결책 : 가능한 해결책
중 하나는 먼저 A에서 가장 가까운 노드까지의 최단 경로를 계산하는 것입니다. 이것은 정방향 경로입니다. 그런 다음 방문한 각 작업의 정방향 경로를 재귀 적으로 계산합니다. 결과는 나무입니다. 예를 들면 다음과 같습니다.

          에이
      기원전
    DE

이제 직원들이 나무를 통과하여 작업을 방문하는 방법을 결정할 때입니다. 직원 이 작업 A부터 시작하여 은 왼쪽 하위 트리 로 전송 되고 는 오른쪽 하위 트리로 전송됩니다. 경우 다음 왼쪽 하위 트리에서 아무도 오른쪽 하위 트리에 갈 필요가 없습니다 이제까지합니다.n 1 n 2 n 2 0nn1n2n20

들어 직원 모두 단지 앞으로 이동합니다. 를 들어 직원은 다른 작업을 방문하기 위해 역 경로를 사용해야합니다. 예를 들어 D에서 B의 경우 알고리즘은 가장 짧은 경로를 계산합니다. 이것은 추가 계산입니다. D에서 E까지 가장 짧은 경로를 직접 계산해보십시오. 잘만되면 그것은 여전히 여분의 계산입니다.n = 1n=n=1

그러나 물론 계산 시간은 무한히 줄어들지 않을 것입니다 ( 너무 크면 리소스 관리 및 자료가 열악해질 수 있습니다).n


6
의견을 보내 주셔서 감사합니다. 일반적으로 컴퓨터 과학에서 알고리즘은 비트 시퀀스를 입력으로 받아들이고 다른 비트 시퀀스를 출력하는 것으로 이해됩니다. 그 표준 이해로, 나는이 대답이 어떻게 의미가 있는지 알 수 없습니다. 알고리즘의 개념이 다른 경우 알고리즘의 의미를 설명하기 위해 질문을 편집하면 도움이 될 것입니다 (표준 용어 사용에 해당하는 방식으로 용어를 사용하지 않는 것처럼 들리므로) 내가 이해할 때 용어).
DW

입력은 단순히 숫자 (자원 수) 일 수 있습니다. 이는 알고리즘이 수행해야하는 추가 계산 수에 영향을줍니다. 보다 구체적인 예를 제공하기 위해 답변을 편집하겠습니다.
yemelitc

편집 해 주셔서 감사합니다. 훨씬 명확 해졌습니다. 이제 솔루션 계산 비용과 원래 생각했던대로 실행 비용을 혼동하지 않는 것을 알았습니다. 그러나 지금 우리는 일반적인 상황에 처해 있습니다. 먼저 입력을 읽는 데 최소한 선형 시간이 걸립니다. 둘째, 어려운 사례는 당신이 작은 나무와 gazillion 사람들에게주는 것이 아니라 큰 나무와 상대적으로 적은 사람들에게주는 것입니다. (예를 들어, 당신이 백만 비트를 허용한다면, 나는 약 1,000 개의 정점이있는 나무를 선택하고 5 개의 정점이있는 나무가 아니라 5 명의 사람들을 줄 것입니다.)
David Richerby

동의한다. 원래 질문이 우리를 유혹했던 것과 달리 우리 모두가 그것에 대해 매우 비판적으로 된 것처럼 보입니다! 그러나 희망이 있다면 '자원으로 입력'이라는 아이디어를 얻게 될 것입니다. 작업의 규모와 상관없이 더 많은 사람들이 더 좋습니다. 여전히 점근 적 의미에서 당신은 분명히 옳습니다. 음수가 아닌 정수에 대해 비난해야합니다.
yemelitc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.