큐브의 가장자리를 무작위로 걷습니다.


35

개미는 입방체 모서리에 놓여 움직일 수 없습니다. 거미는 반대편 모서리에서 시작하여 확률로 큐브의 가장자리를 따라 모든 방향 으로 이동할 수 있습니다 . 거미가 개미에게 가야하는 단계는 평균 몇 개입니까?1 / 3(x,y,z)1/3

(이것은 숙제가 아니며 인터뷰 질문이었습니다.)


7
숙제? 지금까지 뭐 해봤 어?
Adrian

Markov 체인과 관련하여 훌륭한 소개가 있습니다. setosa.io/blog/2014/07/26/markov-chains
DL Dahly

1
일반적으로 이런 종류의 일상적인 책은 self-study태그 로 표시 하고 태그 위키 의 지침을 따라야합니다 . 이 질문을 편집하고 향후 유사한 질문에 포함 시키십시오
Glen_b

4
@GarethMcCaughan-아니요 인터뷰 질문이었습니다.
엘리자베스 수잔 조셉

@alesc에 이어 JavaScript Plunker를 만들었습니다. plnkr.co/edit/jYQVDI
abbaf33f

답변:


32

각 상태가 거미와 개미 사이의 거리를 나타내는 Markov 체인으로 문제를 모델링하는 것이 좋습니다. 이 경우 거리 는 수 있으므로 4 개의 가능한 상태 가 있습니다 . i { 0 , 1 , 2 , 3 }Sii{0,1,2,3}

거미가 입방체의 반대편 모서리에있을 때, 개미로부터 3 걸음 떨어져 있습니다. 상태 .S3

전환 행렬 .P

  • 큐브를 그리면 상태 있을 때 마다 모든 움직임이 거미와 개미 사이의 거리를 2 단계로 줄입니다. 따라서 상태 있을 때 확률 1의 상태 로 이동합니다 .S 3 S 2S3S3S2

  • 상태 있을 때 도착한 가장자리를 사용하여 상태 으로 돌아가 거나 다른 두 가장자리를 선택하면 거리를 한 단계 만 줄일 수 있습니다. 우리는 상태에있을 때 그래서, 우리는 상태로 이동할 수 확률이 2/3로 및 상태에 확률이 1/3로.S 3 S 2 S 1 S 3S2S3S2S1S3

  • 상태 있을 때 가능한 세 가지 에지 중 하나를 사용하여 상태 이동할 수 있습니다 . 다른 두 개를 사용하면 상태 로 돌아 . 따라서 상태 있을 때는 확률이 1/3 인 상태 으로 , 확률이 2/3 인 상태 로 이동할 수 있습니다 .S 0 S 2 S 1 S 0 S 2S1S0S2S1S0S2

  • 상태에 도달하면 목표이기 때문에 그대로 유지됩니다. 은 흡수 상태입니다.S 0S0S0

P=[PS3S3PS3S2PS3S1PS3S0PS2S3PS2S2PS2S1PS2S0PS1S3PS1S2PS1S1PS1S0PS0S3PS0S2PS0S1PS0S0]=[01001/302/3002/301/30001]

이것은 3 개의 과도 상태 ( , , )와 하나의 흡수 상태 ( )를 가진 흡수 마르코프 체인입니다 .S 2 S 1 S 0S3S2S1S0

이론에 따르면, 천이 상태와 흡수 상태 를 갖는 마르코프 체인의 전이 행렬은 다음과 같이 다시 쓸 수 있습니다. tP = [ Q t R 0 r × t I r ]r

P=[QtR0r×tIr]

여기서 는 일부 과도 상태에서 다른 과도 상태로 전이 할 확률을 나타내는 행렬이며 은 다음 중 하나에서 전이 할 가능성 이있는 행렬입니다. 과도은 중 하나에 상태 흡수 상태. 항등 행렬 은 흡수 상태 중 하나에 도달하면 해당 상태에서 벗어나지 않음을 보여줍니다 . 모든 제로 행렬 는 흡수 상태에서 로의 전이가없는 것으로 해석 될 수 있습니다. t×t R t×Qtt×tRt r I r r 0 r × t r tt×rtrIrr0r×trt 과도 상태.

의 엔트리 상태에서 전이의 확률을 나타내는 상태로 정확히 하나의 단계. 단계 의 확률을 얻으려면 의 항목이 필요합니다 . 모든 합하면 과도 상태 에서 시작한 후 과도 상태 로의 예상 방문 수를 항목에 포함하는 행렬을 얻습니다 .Q t i j k ( i ,(i,j)QtijkQ k t k ( i , j ) j i(i,j)Qtkk(i,j)ji

k=0Qtk=(ItQt)1

흡수 될 때까지 단계 수를 얻으려면 의 각 행 값을 합산하십시오 . 이것은로 나타낼 수 있습니다(ItQt)1

t=(ItQt)11

여기서 은 모든 구성 요소가 1 인 열 벡터입니다.1

우리의 경우에 이것을 적용하자 :

위에서 언급 한 바와 같이, 우리의 경우에 우리는 = 3 과도 상태와 = 1 흡수 상태를 가진다 : r Q ttr

Qt=[0101/302/302/30]R=[001/3]

방문수가 예상되는 행렬은

(ItQt)1=[2.54.531.54.53133]

이 행렬은 다음과 같이 해석 될 수 있습니다. 상태 에서 시작 하여 흡수되기 전에 평균적으로 2.5 배, 4.5 배, 3 회 방문합니다.S 0 S 3 S 2 S 1S3S0S3S2S1

상태 에서 상태 까지의 예상 단계 수 는 다음 벡터의 첫 번째 구성 요소에 의해 제공됩니다.S 0S3S0

t=[2.54.531.54.53133][111]=[1097].

의 두 번째 및 세 번째 구성 요소는 각각 및 에서 시작하는 경우 예상되는 단계 수입니다 .S 0 S 2 S 1tS0S2S1


나는 mcmc가 무엇인지 전혀 모른다. 나는 그것을 읽고 당신의 해결책을 확인해야합니다. 솔루션을 보완하는 좋은 mcmc 설명이 있습니까?
Elizabeth Susan Joseph

10
@ElizabethSusanJoseph Markov 체인과 MCMC (Markov 체인 Monte Carlo)는 서로 다른 두 가지 개념입니다 (MCMC는 Markov 체인을 기반으로하지만). 이 답변은 MCMC를 사용하지 않습니다. 따라서 MCMC가 아닌 Markov chain에 대한 좋은 설명을 찾고있을 것입니다.
Juho Kokkala

천이 행렬 P 의 사용, 수량 r 의 의미 및 열 벡터의 높이를 정의하고 설명하여 설명을 향상시킬 수 있습니다 . 벡터 t 의 후속 요소의 의미에 대한 보너스 포인트 . :)
Alexis

@ JuhoKokkala-감사합니다. 마코프 체인 설명을 살펴 보겠습니다.
엘리자베스 수잔 조셉

@Alexis 행렬과 벡터에 대한 설명을 추가했습니다.
tiagotvv

21

하자 예상 단계의 수를합니다. 하자 거미와의 기원에 인접한 모든 코너에서 예상 단계의 숫자 개미에 대한 저두 요.xx1x0

그런 다음 및 입니다. 이후 x=1+x1x0=1+23x1

x1=1+23x0+13x=1+23x0+13+13x1

우리는 얻을 . 따라서 은 및 암시합니다 .x1=x0+2x0=1+23x0+43x0=7x1=9

우리는 으로 답을 얻습니다 .x=10

편집하다:

좌표 로 큐브를 그리면 은 거미의 시작 위치이며 은 개미의 위치입니다.(x,y,z)111000

거미는 , 또는 이동할 수 있습니다 .011101110

큐브의 대칭에 의해, 이들은 개미에 대해 동일한 수의 예상 단계를 가져야하며 로 표시됩니다 . 에서 , 우리는 하나 (확률 원점으로 돌아갈 수 또는 (확률) ) 우리가 지점 중 하나에 갈 수 , , 우리가 어느 상태에 따라.X 1 1 / 3x1x11/32/3001100010

다시 한 번 대칭으로,이 점들은 이라고하는 동일한 단계 수를 갖습니다 . 이 위치에서 우리는 확률로 한 단계로 목표에 도달 하거나 확률로 위치 중 하나로 돌아갈 수 있습니다. 이는 입니다. 1 / 3 (X) 1 2 / 3 X 0 = 1x01/3x12/3x0=131+23(1+x1)=1+23x1


답을 더 자세히 설명해 주시겠습니까? 평신도 용어로 설명하십시오 :)
Elizabeth Susan Joseph

17

그것을 생각하는 좋은 추상화는 다음과 같습니다.

Ant의 위치를 및 Spider . 이제 스파이더가 움직일 수있는 각 움직임은 본질적으로 3 개의 구성 요소 중 하나를 또는 로 정확히 전환합니다 . 따라서 질문은 다음과 같습니다.(0,0,0)(1,1,1)1001

If I randomly switch bits in (1,1,1) after how many steps in average do I get 0,0,0

가장 짧은 방법은 3 스위치입니다. 비트가 중요하지 않기 때문에 시작될 확률은입니다 1 * 2/3 * 1/3 = 2/9. 1 번 실수를하면 (1 비트를 1로 다시 전환) 5 단계가 필요합니다. 실수를 할 확률은 7/9입니다. 실수를 한 번만하려면 다시 거기에서 돌아와서 모든 것을 다시해야합니다. 따라서 정확히 1 개의 실수를해서 5 단계를 초래할 7/9 * 2/9가능성은 2 개의 실수 (일명 7 단계)를 만드는 (7/9)² * 2/9것입니다.

따라서 예상 평균 단계 수에 대한 공식은 다음과 같습니다.

E(steps)=n=0(3+2n)29(79)n=10

귀하의 솔루션은 혼란 스럽습니다. 이 공식은 무엇입니까? 여기서 n은 무엇입니까?
엘리자베스 수잔 조셉

5
실제로 가장 짧고 가장 깨끗한 솔루션입니다. 해는 0에서 무한대까지의 수의 무한 합의 형태이며 무한 합의 n현재 정수입니다.
alesc

정말 좋습니다! 내 대답은 비슷하지만 스위치 시퀀스를 쌍으로 나눕니다. 이는 arithmetico-geometric series 합계 대신 기하학적 변수 (또는 기하학적 시리즈 합계)를 기대할 수있게합니다 . 이것이 유일한 실질적인 차이입니다. 즉, 비행이 잡히지 않는 한 "처음 세 개의 스위치, 그 다음에 한 쌍"(당신이했던 것처럼) 또는 "첫 번째 스위치, 그다음에 한 쌍"(나처럼)을 취하는 지 여부는 중요하지 않습니다. 3 개의 스위치에서 1 개의 홀수 및 2 개의 짝수 패리티를 처리합니다.
Silverfish

16

tiagotvv의 답변을 칭찬하기 위해 :

나는 자연스럽게 이러한 종류의 문제를 행렬이라고 생각하지 않습니다 (물론이더라도). 나는 그것을 아래에서 그려야합니다. S에서 이동할 곳이 3 곳인데 모두 As입니다. A에서 S로 돌아가거나 두 B 중 하나로 이동할 수 있습니다. 모든 B에서 E로 이동하거나 두 개의 As 중 하나로 이동할 수 있습니다. 이것은 모두 tiagotvv가 제공 한 전환 행렬로 변환되며, 그래프 형식으로도 그릴 수 있습니다.

여기에 이미지 설명을 입력하십시오

나는 수학에 끔찍하기 때문에 문제를 시뮬레이션하려고합니다. R의 markovchain 패키지로이를 수행 할 수 있습니다.

  library(markovchain)
  library(ggplot2)

  # Create a markovchain object, given the states and their transition matrix

  mcCube <- new("markovchain", 
                states = c("S", "A", "B", "E"),
                transitionMatrix = matrix(data = c(0,   1,   0,   0,
                                                   1/3, 0,   2/3, 0,
                                                   0,   2/3, 0,   1/3,
                                                   0,   0,   0,   1), 
                                          byrow = T, nrow = 4),
                name = "cube")

  # The following code calcuates the probability of landing on E after taking
  # between 1 and 100 steps from the start, given the above set of transition
  # probabilities.

  start <- c(1, 0, 0, 0)

  list <- list()

  for (i in 1:100){

    list[[i]] <- (start * mcCube^i)[4] 

  }

   a <- do.call(rbind, list)

   data <- data.frame(propE = a, 
                      steps = c(1:100))

   ggplot(data, aes(x = steps, y = propE)) +
    geom_line(size = 1) +
    ylab("Probability you reached the spider") +
    xlab("Number of steps taken") +
    theme_bw() +
    theme(panel.grid.minor = element_blank())

여기에 이미지 설명을 입력하십시오

  # This code simulates 1000 different applications of the markov chain where you 
  # take 1000 steps, and records the step at which you landed on E

  list <- list()
  for (i in 1:1000) {


    b <- rmarkovchain(n = 1000, object = mcCube, t0 = "S", include.t0 = T)

    list[[i]] <- 1001 - length(b[b == "E"])

  }

  data <- as.data.frame(do.call(rbind, list))

  ggplot(data, aes(x = V1)) +
    geom_density(fill = "grey50", alpha = 0.5) +
    geom_vline(aes(xintercept = mean(V1))) +
    ylab("Density") +
    xlab("Number of steps to reach E") +
    theme_bw() +
    theme(panel.grid.minor = element_blank())

  mean(data$V1)  # ~10 is the average number of steps to reach E in this set of
                 # simulations

여기에 이미지 설명을 입력하십시오

tiagotvv의 답변은 다음과 같이 R에서 계산 될 수 있습니다.

q = matrix(c(0,   1,   0,   
             1/3, 0,   2/3, 
             0,   2/3, 0), byrow = T, nrow = 3)


(solve(diag(3) - q) %*% c(1, 1, 1))[1] # = 10

11

패리티 고려 사항은 놀랍도록 간단한 기계를 사용하여 매우 깨끗한 솔루션을 제공합니다. Markov 체인 없음, 반복되는 기대치 없음, 고등학교 수준 요약 만. 기본 아이디어는 거미가 방향으로 짝수 번 움직 인 경우 원래 좌표 로 돌아가서 개미의 위치에있을 수 없다는 것입니다. 방향으로 홀수 번 이동 한 경우 좌표는 개미와 일치합니다. 세 방향 모두에서 홀수 번 이동 한 경우에만 개미 의 , 및 좌표 와 일치합니다 .xxxxxyz

처음에 거미는 세 방향 중 어느 방향으로도 이동하지 않았으므로 각 방향의 패리티는 짝수입니다. 개미에 도달하려면 세 패리티를 모두 뒤집어 야합니다.

스파이더의 첫 번째 이동 ( 방향으로 레이블 지정 ) 후 정확히 한 방향은 홀수 패리티를 가지며 다른 두 방향 ( 및 )은 짝수입니다. 개미를 잡으려면이 두 패리티 만 뒤집어 야합니다. 홀수의 후속 이동에서는 달성 할 수 없으므로 지금부터는 이동 을 고려 합니다. 첫 번째 페어 이동에는 9 가지 가능한 조합이 있습니다.xyz

(x,x),(x,y),(x,z),(y,x),(y,y),(y,z),(z,x),(z,y),or(z,z)

우리는 한 쌍의 움직임 후에 개미에 도달하기 위해 와 방향으로 움직여야하며, 9 가지 조합 중 2 가지가 이것을 달성 할 것입니다 : 및 는 세 패리티가 모두 홀수임을 보장합니다.yz(y,z)(z,y)

다른 7 개의 조합은 하나의 홀수와 두 개의 짝수 패리티를 남깁니다. , 또는 의 세 번의 반복 된 움직임 은 모든 패리티를 변경하지 않은 채로두고 개미에 도달 하려면 하나의 와 움직임이 여전히 필요합니다 . 다른 쌍에는 방향의 움직임을 포함하여 두 개의 뚜렷한 움직임이 있습니다 . 이것은 의 패리티 와 다른 패리티 중 하나 ( 또는 )를 전환하므로 여전히 하나의 홀수 및 두 개의 짝수 패리티가 남습니다. 예를 들어, 쌍 는 하나 더 와 하나 더(x,x)(y,y)(z,z)yzxxyz(x,z)xy개미에 도달하기 위해 : 우리가 이전에 있었던 것과 동등한 상황 (축의 레이블을 바꾼 후). 그런 다음 동일한 방식으로 다음 쌍 이동을 분석 할 수 있습니다.

일반적으로 짝을 이루는 동작은 1 개의 홀수 및 2 개의 짝수 패리티로 시작하며, 3 개의 홀수 패리티 (확률 )와 개미의 즉각적 캡처 또는 1 개의 홀수 및 2 개의 짝수 패리티 ( 확률 )을 사용하면 동일한 상황으로 돌아갑니다.2979

은 개미에 도달하는 데 필요한 한 쌍의 이동 수로 하자 . 분명히 지지체에 기하학적 분포는 다음 성공의 확률 이므로 평균 갖는다 입니다. 하자 초기 이동하고 포함한 필요한 이동의 총 숫자 후속 쌍의 이동. 그런 다음 이므로 기대치의 선형성을 적용합니다. .MM{1,2,3,}p=29NMN=2M+1E(N)=2E(M)+1=2×4.5+1=10E(M)=p1=92=4.5NMN=2M+1E(N)=2E(M)+1=2×4.5+1=10

또는 하고 음이 아닌 정수 값만 사용하는 불연속 분포평균에 대해 잘 알려진 공식을 적용 할 수 있습니다 . . 이는 범 최초 용어와 등비이고 일반적인 비율 합은 . 그런 다음 이전과 같이 을 사용할 수 있습니다 .E(M)=m = 1 P(Mm)P(Mm)=(79)m1E(M)=m=1P(Mm)E(M)=m=1(79)m1a=1r=79 a1r=117/9=12/9=92E(N)

Markov 체인 솔루션과 비교

Markov chain transition matrix에서 이것을 어떻게 발견했을 수 있습니까? @DLDahly의 표기법을 사용하여 전이 행렬의 상태는 홀수 패리티가있는 방향 수의 설명에 해당합니다.

큐브에서 거미 사냥 개미

1 단계 전이 행렬은

P=[PSSPSAPSBPSEPASPAAPABPAEPBSPBAPBBPBEPESPEAPEBPEE]=[01001/302/3002/301/30001]

첫 번째 행은 한 번의 움직임 후에 스파이더가 상태 A (1 홀수 및 2 짝수 패리티)에 있음을 보여줍니다. 2 단계 전이 행렬은 다음과 같습니다.

P(2)=P2=[1/302/3007/902/92/904/91/30001]

스파이더 두 이동 시간에, 상태 (A)에 입력되면 그 중 확률 상태 (A)로 복귀했다고 번째 행 쇼 우릴 probabilty로, 또는 상태 E (홀수 패리티)에 도달하고 앤트 캡처 . 따라서 상태 A에 도달하면 2 단계 전이 행렬에서 필요한 2 단계 이동 수를 위와 같은 기하 분포를 사용하여 분석 할 수 있습니다. 이것은 내 솔루션을 찾은 방법이 아니지만 때로는 유용한 패턴을 활용할 수 있는지 확인하기 위해 전이 행렬의 처음 몇 가지 힘을 계산할 가치가 있습니다. 나는 때때로 이것이 시험이나 인터뷰 상황에서만 실제로 관련이있는 것으로 매트릭스를 뒤집거나 고유 분해를 수행하는 것보다 간단한 솔루션을 제공하는 것으로 나타났습니다.2 / 97/92/9


2

귀하의 질문에 수치 적으로 대답하기 위해 짧은 Java 프로그램을 작성했습니다. 거미의 횡단은 실제로 임의적이므로 개미에 도달하기 전에 사이클로 횡단 할 수도 있습니다.

그러나 "반대 코너"라는 용어를 정의하지 않았으므로 두 가지 시나리오가 있습니다. 동일한 평면 또는 큐브와 반대쪽에 있습니다. 첫 번째 시나리오에서 가장 짧은 경로는 2 단계, 두 번째 시나리오에서는 3 단계입니다.

나는 1 억 회 반복을 사용했으며 결과는 다음과 같습니다.

-- First scenario --
Steps sum: 900019866
Repeats: 100000000
Avg. step count: 9.00019866

-- Second scenario --
Steps sum: 1000000836
Repeats: 100000000
Avg. step count: 10.00000836

소스 코드:

import java.util.Random;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.IntStream;

public class ProbabilityQuizSpider {

    // Edges of the cube
    private static final int[][] EDGES = new int[][] {
            {1, 3, 7}, // corner 0
            {0, 2, 4}, // corner 1
            {1, 3, 5}, // corner 2
            {0, 2, 6}, // corner 3
            {1, 5, 7}, // corner 4
            {2, 4, 6}, // corner 5
            {3, 5, 7}, // corner 6
            {0, 4, 6}  // corner 7
    };

    private static final int START = 0; // Spider
    private static final int FINISH = 5; // Ant
    private static final int REPEATS = (int) Math.pow(10, 8);

    public static void main(String[] args) {

        final Random r = new Random();
        final AtomicLong stepsSum = new AtomicLong();

        IntStream.range(0, REPEATS).parallel().forEach(i -> {

            int currentPoint = START;
            int steps = 0;

            do {

                // Randomly traverse to next point
                currentPoint = EDGES[currentPoint][r.nextInt(3)];

                // Increase number of steps
                steps++;

            } while(currentPoint != FINISH);

            stepsSum.addAndGet(steps);

        });

        // Results
        System.out.println("Steps sum: " + stepsSum.get());
        System.out.println("Repeats: " + REPEATS);
        System.out.println("Avg. step count: " + (((double) stepsSum.get()) / ((double) REPEATS)));

    }

}

편집 : 스크립트에서 오타를 수정하고 결과도 업데이트했습니다.


2
나는 당신의 가장자리가 잘못 생각합니다. 코너 3에는 목록에 7이 있지만 코너 7에는 목록에 3이 없습니다. 정점을 숫자 0..7에 매핑하는 올바른 방법은 각 비트 위치가 하나의 축에 해당하므로 가장자리를 통과하는 것이 XOR이 1, 2 또는 4와 같다는 것입니다.
Gareth McCaughan

1
의견 감사합니다. 코너 # 3을 정의 할 때 오타를 만들었습니다 {0, 2, 6}. 프로그램을 다시 실행하고 다음 결과를 얻었습니다. 코너 # 0에서 코너 # 5 (입방체의 대각선)를 통과하는 단계 10.00000836 단계. 이것은 @Hunaphu 와도 일치합니다.
alesc

예, 훨씬 낫습니다.
Gareth McCaughan 2016

2

Monte Carlo 시뮬레이션 ( )을 통해 수수께끼를 .m은 전자 N ( S t의 전자 P S )10n=104mean(steps)10

몬테카를로 시뮬레이션 ($ n = 10 ^ 4 $)

내가 사용한 R 코드는 다음과 같습니다.

ant = c(0,0,0) # ant's coordinates 

sim = 1e4 # number of MC simulations
steps = numeric() # initialize array of steps

for (i in 1:sim)
{
  spider = c(1,1,1) # spider's coordinates
  count = 0 # initialize step counter

  # while ant's coordinates == spider's coordinates
  while (!isTRUE(all.equal(ant, spider)))
  {

  # random walk in one of three dimensions
  xyz = trunc(runif(1,1,4))

  # let the spider move
  if (spider[xyz] == 1) 
    {
    spider[xyz] = 0
    } else if (spider[xyz] == 0) 
    {
    spider[xyz] = 1
    }

  # add one step
  count = count + 1
  }

# add the number of step occurred in the ith iteration
steps = c(steps, count)

# print i and number of steps occurred
cat("\n", i, " ::: ", count)
}

# print the mean of steps
(mean(steps))

9
이 코드는 훌륭하고 명확하지만 30 분 동안 백만 줄이 인쇄되는 것을 사용자에게 요구하고 있습니다. 그리고 정답이 이 아니라는 것을 어떻게 알 수 있습니까? :-) FWIW, 몇 가지 기본 기능을 이용 하여 1 초 10.000001Rn.sim <- 1e6; x <- matrix(runif(n.sim*3), ncol=3); moves <- x >= pmax(x[, 1], x[, 2], x[, 3]); positions <- apply(moves, 2, cumsum) %% 2; types <- rowSums(positions); vertices <- types[types==0 | types==3]; transitions <- cumsum(diff(vertices) != 0); n.sim / transitions[length(transitions)]
이내에

-1

"하지만 반대편 구석"이라는 용어를 정의하지 않았을 때 alesc가 올바른 방향으로 가고 있다고 생각합니다. 질문에 빠진 것이 없다면, 정답이없고 가정에 근거한 답입니다. 큐브 크기는 정의되어 있지 않습니다. IE 10 입방 피트, 1000 입방 피트 등. 개미 크기는 정의되지 않음 IE 작은 정원, 목수, 거대한 빨간색 등, 스파이더 유형이 정의되지 않았습니다 (단계 크기를 결정하기 위해) IE 작은 정원, 독거미 등. "변수. 답은 0 단계 또는 결정되지 않은 / 무한 단계 수일 수 있습니다.


3
이 답변은 원예 직책이 아니라면 다음 단계의 인터뷰에 도달하지 못할 것입니다.
whuber

1
이 경우 '단계'가 '한 노드 (코너)에서 인접한 노드로 이동하는 것'을 의미하는 것으로 충분히 명확하며 큐브의 "반대 코너"가 의미하는 것은 분명합니다. 개미는 유닛 큐브의 모서리 (x, y, z)에 있고 거미는 (1-x, 1-y, 1-z)에 있습니다. 따라서 개미가 원점에 있으면 거미는 (1,1에 있습니다 ,1)). 따라서 귀하의 우려 사항 중 어느 것도 요청되는 질문과 실질적으로 관련이없는 것으로 보입니다. [유권자 주 - 위 표에 충분할 아래 나는 이것이 실질적인 편집없이 좋은 답변이라고 생각하지 않지만, 나는이 삭제 투표의 대상이 될한다고 생각하지 않습니다]
Glen_b

@Glen_b 질문의 세부 사항에 대해 명확성을 추구하는 것 같으므로, 이것은 실질적인 대답이 아닌 주석으로 의도 된 것으로 생각됩니다.
Silverfish

1
@Silverfish 당신은 맞을지 모르지만 '답이 아님'으로 끝납니다. 나는 "이 질문에 답할 수 없다"고 말하는 대신에 그것을 읽습니다. 나는 추론을 뒷받침 할 때 일반적으로 답으로 생각하지만 그 이유는 단순히 그 질문에 대한 오해에 의한 것이라고 생각합니다.
Glen_b
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.