Berjalan acak di tepi kubus


35

Semut ditempatkan di sudut kubus dan tidak bisa bergerak. Seekor laba-laba mulai dari sudut yang berlawanan, dan dapat bergerak di sepanjang tepi kubus ke segala arah dengan probabilitas sama . Rata-rata, berapa banyak langkah yang diperlukan laba-laba untuk sampai ke semut?(x,y,z)1/3

(Ini bukan pekerjaan rumah, itu pertanyaan wawancara.)


7
Pekerjaan rumah? Apa yang sudah Anda coba sejauh ini?
Adrian

Mengenai rantai Markov, berikut adalah intro setosa.io/blog/2014/07/26/markov-chains
DL Dahly

1
Biasanya semacam ini pekerjaan buku rutin harus ditandai dengan self-studytag dan ikuti pedoman di tag wiki . Harap edit pertanyaan ini dan sertakan di pertanyaan serupa di masa mendatang
Glen_b -Reinstate Monica

4
@GarethMcCaughan - Tidak, itu pertanyaan wawancara.
Elizabeth Susan Joseph

Mengikuti @alesc saya membuat JavaScript Plunker. plnkr.co/edit/jYQVDI
abbaf33f

Jawaban:


32

Saya menyarankan memodelkan masalah sebagai rantai Markov di mana setiap negara mewakili jarak antara laba-laba dan semut. Dalam hal ini kami memiliki 4 kemungkinan status karena jarak yang dapat . i { 0 , 1 , 2 , 3 }Sii{0,1,2,3}

Ketika laba-laba berada di sudut yang berlawanan dari kubus, ia berada pada jarak 3 langkah dari semut. Itu dalam keadaan .S3

Membangun matriks transisi .P

  • Jika kita menggambar sebuah kubus, kita melihat bahwa ketika kita berada pada keadaan , setiap gerakan mengurangi jarak antara laba-laba dan semut menjadi 2 langkah. Jadi, ketika kita berada di negara kita pindah ke negara dengan probabilitas 1.S 3 S 2S3S3S2

  • Ketika kita berada di negara , kita dapat kembali ke negara menggunakan tepi kita tiba dari sana atau kita dapat mengurangi jarak hanya satu langkah jika kita memilih dua tepi lainnya. Jadi, ketika kita berada pada status kita dapat beralih ke menyatakan dengan probabilitas 2/3 dan menyatakan dengan probabilitas 1/3.S 3 S 2 S 1 S 3S2S3S2S1S3

  • Ketika kita berada di negara bagian , kita bisa pergi ke negara bagian menggunakan salah satu dari tiga kemungkinan tepi. Jika kita menggunakan dua lainnya, kita kembali ke . Jadi, ketika kita berada di negara kita bisa pindah ke negara dengan probabilitas 1/3 dan negara dengan probabilitas 2/3.S 0 S 2 S 1 S 0 S 2S1S0S2S1S0S2

  • Ketika kami menyatakan , kami tetap di sana karena itu adalah tujuan kami. adalah kondisi menyerap.S 0S0S0

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

Ini adalah rantai Markov yang menyerap dengan tiga kondisi transien ( , , ) dan satu status menyerap ( ).S 2 S 1 S 0S3S2S1S0

Menurut teori tersebut, matriks transisi rantai Markov dengan transient state dan absorbing state dapat ditulis ulang sebagai: r P = [ Q t R 0 r × t I r ]tr

P=[QtR0r×tsayar]

di mana adalah matriks yang menunjukkan probabilitas transisi dari beberapa keadaan transien ke keadaan transien lain, sedangkan adalah matriks dengan probabilitas transisi dari salah satu dari yang sementara menyatakan salah satu menyerap negara. Matriks identitas menunjukkan bahwa ketika salah satu negara menyerap tercapai, tidak ada transisi dari negara itu. Matriks semua nol dapat diartikan bahwa tidak ada transisi dari salah satu status menyerap ke salah satu dari t×t R t×rtr I r r 0 r × t rtQtt×tRt×rtrsayarr0r×trt keadaan sementara.

The masuknya merupakan probabilitas transisi dari keadaan ke keadaan persis satu langkah. Untuk mendapatkan probabilitas untuk langkah kita memerlukan entri dari . Menjumlahkan untuk semua , kita mendapatkan matriks yang berisi entri jumlah kunjungan yang diharapkan ke keadaan transien setelah mulai dari keadaan transien .Q t i j k ( i , j ) Q k t k ( i , j ) j i(saya,j)Qtsayajk(saya,j)Qtkk(saya,j)jsaya

k=0Qtk=(sayat-Qt)-1

Untuk mendapatkan jumlah langkah hingga diserap, jumlahkan saja nilai setiap baris . Ini dapat diwakili oleh(sayat-Qt)-1

t=(sayat-Qt)-11

dengan adalah vektor kolom dengan semua komponen sama dengan 1.1

Mari kita terapkan ini pada kasus kita:

Seperti yang dinyatakan di atas, dalam kasus kami, kami memiliki = 3 keadaan transien dan = 1 keadaan menyerap, oleh karena itu: r Q t = [ 0 1 0 1 / 3 0 2 / 3 0 2 / 3 0 ]tr

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

Matriks dengan jumlah kunjungan yang diharapkan adalah

(sayat-Qt)-1=[2.54.531.54.53133]

Matriks ini dapat diartikan sebagai berikut. Mulai dari keadaan dan sebelum diserap di kami mengunjungi, rata-rata, 2,5 kali, 4,5 kali, dan 3 kali.S 0 S 3 S 2 S 1S3S0S3S2S1

Jumlah langkah yang diharapkan dari negara ke negara diberikan oleh komponen pertama dari vektor berikut:S 0S3S0

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

Komponen kedua dan ketiga dari adalah jumlah langkah yang diharapkan ke jika kita mulai dari dan masing-masing.S 0 S 2 S 1tS0S2S1


Saya tidak tahu apa itu mcmc. Saya harus membacanya dan kemudian memeriksa solusi Anda. Apakah ada penjelasan mcmc yang bagus yang memuji solusi Anda?
Elizabeth Susan Joseph

10
@ ElizabethSusanJoseph Perhatikan bahwa rantai Markov dan MCMC (rantai Markov Monte Carlo) adalah dua konsep yang berbeda (meskipun MCMC didasarkan pada rantai Markov). Jawaban ini tidak menggunakan MCMC untuk apa pun. Jadi Anda mungkin mencari penjelasan yang bagus tentang rantai Markov, bukan tentang MCMC.
Juho Kokkala

tiagotvv penjelasan Anda akan ditingkatkan dengan mendefinisikan dan menjelaskan penggunaan matriks transisi P , makna kuantitas r , dan tinggi vektor kolom. Poin bonus untuk makna elemen vektor selanjutnya t . :)
Alexis

@JuhoKokkala - terima kasih saya akan melihat penjelasan rantai markov.
Elizabeth Susan Joseph

@Alexis saya menambahkan beberapa penjelasan tentang matriks dan vektor.
tiagotvv

21

Biarkan menjadi jumlah langkah yang diharapkan. Biarkan menjadi jumlah langkah yang diharapkan dari sudut mana pun yang berdekatan dengan asal laba-laba dan ditto untuk semut.x 1 x 0xx1x0

Kemudian dan . Karena x 0 = 1 + 2x=1+x1x1=1+2x0=1+23x1

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

kita dapatkan itu . Jadi menyiratkan bahwa dan .x 0 = 1 + 2x1=x0+2 x0=7x1=9x0=1+23x0+43x0=7x1=9

Kami mendapatkan jawaban kami sebagai .x=10

Edit:

Jika kita menggambar kubus dengan koordinat maka adalah posisi awal laba-laba dan posisi semut.111 000(x,y,z)111000

Laba-laba dapat bergerak ke , atau .101 110011101110

Dengan simetri kubus ini harus memiliki jumlah langkah yang diharapkan untuk semut yang sama, dilambangkan dengan . Dari , kita dapat kembali ke asal (dengan probabilitas ) atau (dengan probabilitas ) kita dapat menuju ke salah satu poin , , tergantung pada keadaan kita berada di mana.x 1 1 / 3 2 / 3 001 100 010x1x11/32/3001100010

Sekali lagi, secara simetri, titik-titik ini akan memiliki jumlah langkah yang diharapkan sama dengan yang kita sebut . Dari posisi ini kita dapat mencapai tujuan dalam satu langkah dengan probabilitas atau kembali ke salah satu posisi dengan probabilitas . Ini berarti bahwa . 1 / 3 x 1 2 / 3 x 0 = 1x01/3x12/3x0=131+23(1+x1)=1+23x1


Bisakah Anda menguraikan jawaban Anda lebih lanjut? Tolong jelaskan dalam istilah awam :)
Elizabeth Susan Joseph

17

Satu abstraksi yang bagus untuk dipikirkan adalah ini:

Pikirkan Posisi Semut sebagai dan Spider , sekarang setiap gerakan yang dapat dilakukan laba-laba pada dasarnya akan mengubah satu dari tiga komponen dari atau . Jadi pertanyaannya menjadi:( 1 , 1 , 1 ) 1 0 0 1(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

Kami melihat cara tersingkat adalah 3 switch. Karena tidak masalah dengan bit yang mana saya memulai kemungkinan hal itu terjadi 1 * 2/3 * 1/3 = 2/9. Jika kita membuat 1 kesalahan (beralih satu bit kembali ke 1) kita akan membutuhkan 5 langkah. Dan peluang untuk membuat kesalahan adalah 7/9 - jika kita hanya ingin membuat satu kesalahan, kita harus kembali dari sana dan melakukan semuanya dengan benar lagi - sehingga peluang untuk membuat 1 kesalahan dengan tepat menghasilkan 5 langkah adalah 7/9 * 2/9dan peluangnya membuat 2 kesalahan alias 7 langkah (7/9)² * 2/9dan sebagainya.

Jadi rumus untuk jumlah langkah rata-rata yang diharapkan adalah:

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

Solusi Anda agak membingungkan. Apa rumus ini? apa yang ada di sini?
Elizabeth Susan Joseph

5
Ini sebenarnya solusi terpendek dan terbersih. Solusinya adalah dalam bentuk jumlah angka tak terbatas dari nol hingga tak terbatas dan nmerupakan bilangan bulat saat ini dalam jumlah tak terbatas itu.
alesc

Ini sangat bagus! Jawaban saya serupa, tetapi memecah urutan sakelar menjadi berpasangan - yang memungkinkan saya mengharapkan variabel geometrik (atau sebagai alternatif, menjumlahkan deret geometri) daripada menjumlahkan deret aritmetico-geometrik . Itulah satu-satunya perbedaan mendasar: tidak masalah apakah seseorang mengambil "tiga sakelar pertama, lalu pasangan selanjutnya" (seperti yang Anda lakukan) atau "sakelar pertama, lalu pasangan selanjutnya" (seperti yang saya lakukan), karena kecuali lalat ditangkap dalam 3 switch, maka baik Anda berurusan dengan satu paritas ganjil dan dua genap.
Silverfish

16

Sekadar pujian jawaban tiagotvv:

Secara alami saya tidak menganggap masalah-masalah semacam ini sebagai matriks (meskipun memang demikian). Saya harus menariknya, yang telah saya lakukan di bawah ini. Anda dapat melihat bahwa ada 3 tempat untuk bergerak dari S, yang semuanya adalah As. Dari A, Anda dapat kembali ke S, atau pindah ke salah satu dari dua B. Dari B apa pun, Anda dapat pindah ke E, atau ke salah satu dari dua As. Ini semua diterjemahkan ke matriks transisi yang diberikan oleh tiagotvv, yang juga dapat digambarkan dalam bentuk grafik.

masukkan deskripsi gambar di sini

Karena saya buruk dalam matematika, saya hanya akan mencoba untuk mensimulasikan masalah Anda. Anda dapat melakukan ini dengan paket markovchain di R.

  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())

masukkan deskripsi gambar di sini

  # 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

masukkan deskripsi gambar di sini

jawaban tiagotvv dapat dihitung dalam R sebagai:

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

Pertimbangan paritas memberikan solusi yang sangat bersih, menggunakan mesin sederhana yang mengejutkan: tidak ada rantai Markov, tidak ada harapan berulang, dan hanya penjumlahan tingkat sekolah menengah. Gagasan dasarnya adalah bahwa jika laba-laba telah bergerak beberapa kali dalam arah , ia telah kembali ke koordinat aslinya sehingga tidak dapat berada pada posisi semut. Jika telah berpindah beberapa kali ganjil dalam arah , maka koordinat -nya cocok dengan semut. Hanya jika ia telah memindahkan jumlah ganjil kali dalam ketiga arah itu akan cocok dengan koordinat , dan semut.x x x x y zxxxxxyz

Awalnya laba-laba telah membuat nol bergerak di salah satu dari tiga arah, sehingga paritas untuk setiap arah adalah sama. Ketiga paritas perlu dibalik untuk mencapai semut.

Setelah gerakan pertama laba-laba (beri label arah itu ), tepat satu arah memiliki paritas ganjil dan dua lainnya ( dan ) genap. Untuk menangkap semut, hanya dua paritas yang perlu dibalik. Karena itu tidak dapat dicapai dalam jumlah ganjil dari gerakan selanjutnya, mulai sekarang kami mempertimbangkan pasangan gerakan. Ada sembilan kemungkinan kombinasi untuk langkah berpasangan pertama:y zxyz

(x,x),(x,y),(x,z),(y,x),(y,y),(y,z),(z,x),(z,y),atau(z,z)

Kita perlu bergerak ke arah dan untuk mencapai semut setelah satu gerakan berpasangan, dan dua dari sembilan kombinasi akan mencapai ini: dan akan memastikan ketiga paritas aneh.yz(y,z)(z,y)

Tujuh kombinasi lainnya meninggalkan satu paritas ganjil dan dua genap. Tiga gerakan berulang, , atau , membuat semua paritas tidak berubah sehingga kita masih memerlukan satu gerakan dan satu untuk mencapai semut. Pasangan lainnya berisi dua gerakan berbeda, termasuk satu di arah . Ini mengganti paritas dan salah satu paritas lainnya (baik atau ) sehingga kita masih memiliki satu paritas ganjil dan dua paritas genap. Sebagai contoh, pasangan membuat kita membutuhkan satu lagi dan satu lagi(x,x)(y,y)(z,z)yzxxyz(x,z)xyuntuk mencapai semut: situasi yang setara (setelah relabelling kapak) ke tempat kami sebelumnya. Kami kemudian dapat menganalisis langkah pasangan berikutnya dengan cara yang sama.

Secara umum, pasangan yang berpasangan mulai dengan satu paritas ganjil dan dua genap, dan akan berakhir dengan tiga paritas ganjil (dengan probabilitas ) dan penangkapan semut segera, atau dengan satu paritas ganjil dan dua genap ( dengan probabilitas ) yang mengembalikan kita ke situasi yang sama.2979

Biarkan menjadi jumlah gerakan berpasangan yang diperlukan untuk mencapai semut. Jelas mengikuti distribusi geometrik pada dukungan dengan probabilitas keberhasilan sehingga memiliki mean . Misalkan adalah jumlah total gerakan yang diperlukan, termasuk gerakan awal dan gerakan berpasangan berikutnya. Kemudian demikian, menerapkan linearitas harapan, .M.M.{1,2,3,...}hal=29E(M.)=hal-1=92=4.5NM.N=2M.+1E(N)=2E(M.)+1=2×4.5+1=10

Atau Anda dapat mencatat dan menerapkan rumus terkenal untuk rata - rata distribusi diskrit yang hanya mengambil nilai integer non-negatif , . Ini menghasilkan yang merupakan deret geometri dengan suku pertama dan umum rasio demikian juga dengan jumlah . Kita kemudian dapat mengambil seperti sebelumnya.P(M.m)=(79)m-1E(M.)=m=1P(M.m)E(M.)=m=1(79)m-1Sebuah=1r=79 Sebuah1-r=11-7/9=12/9=92E(N)

Perbandingan dengan solusi rantai Markov

Bagaimana saya bisa melihat ini dari matriks transisi rantai Markov? Menggunakan notasi @ DLDahly, status dalam matriks transisi sesuai dengan deskripsi saya tentang jumlah jumlah arah dengan paritas ganjil.

Semut berburu laba-laba di kubus

Matriks transisi satu langkah adalah

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

Baris pertama menunjukkan kepada kita bahwa setelah satu gerakan, laba-laba dijamin dalam keadaan A (satu ganjil dan dua paritas genap). Matriks transisi dua langkah adalah:

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

Baris kedua menunjukkan kepada kita bahwa sekali laba-laba telah memasuki keadaan A, dalam dua gerakan waktu ia telah kembali ke keadaan A dengan probabilitas atau telah mencapai keadaan E (semua paritas ganjil) dan menangkap semut, dengan probabilitas . Jadi setelah mencapai keadaan A, kita melihat dari matriks transisi dua langkah bahwa jumlah langkah dua langkah yang diperlukan dapat dianalisis menggunakan distribusi geometris seperti di atas. Ini bukan bagaimana saya menemukan solusi saya, tetapi kadang-kadang layak menghitung beberapa kekuatan pertama dari matriks transisi untuk melihat apakah pola yang berguna seperti ini dapat dieksploitasi. Saya kadang-kadang menemukan ini untuk memberikan solusi yang lebih sederhana daripada harus membalikkan matriks atau melakukan komposisi eigend dengan tangan - memang sesuatu yang hanya benar-benar relevan dalam situasi ujian atau wawancara.7/92/9


2

Saya telah menulis program Java singkat untuk menjawab pertanyaan Anda secara numerik. Melintasi laba-laba ini benar-benar acak, artinya laba-laba juga dapat melintasi siklus sebelum sampai ke semut.

Namun, Anda tidak mendefinisikan istilah "sudut berlawanan", jadi saya memiliki dua skenario berbeda. Berseberangan dengan melintasi bidang yang sama atau melintasi kubus. Dalam skenario pertama, jalur terpendek adalah 2 langkah, dan 3 langkah dalam skenario kedua.

Saya telah menggunakan 100 juta pengulangan dan hasilnya adalah sebagai berikut:

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

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

Kode sumber:

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)));

    }

}

EDIT: memperbaiki kesalahan ketik pada skrip (dan juga memperbarui hasilnya)


2
Saya pikir tepi Anda salah. Corner 3 memiliki 7 dalam daftar, tetapi corner 7 tidak memiliki 3 dalam daftar. (Saya menyarankan agar Right Way untuk memetakan simpul ke angka 0..7 adalah dengan mengatakan bahwa setiap posisi bit sesuai dengan satu sumbu, sehingga melintasi tepi sama dengan XOR dengan 1, 2, atau 4.)
Gareth McCaughan

1
Terima kasih atas komentarnya. Saya telah membuat kesalahan ketik ketika mendefinisikan sudut # 3, seharusnya {0, 2, 6}. Saya telah menjalankan kembali program dan mendapatkan hasil sebagai berikut: 10.00000836 langkah-langkah untuk melintasi dari sudut # 0 ke sudut # 5 (badan diagonal kubus). Ini juga konsisten dengan @Hunaphu.
alesc

Yup, jauh lebih baik.
Gareth McCaughan

2

Saya telah memecahkan teka-teki Anda melalui simulasi Monte Carlo ( ) dan memperoleh .n=104meSebuahn(stehals)10

Simulasi Monte Carlo ($ n = 10 ^ 4 $)

Berikut adalah kode R yang saya gunakan:

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
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

Saya percaya alesc ada di jalur yang benar ketika menyebutkan "Namun, Anda tidak mendefinisikan istilah" sudut yang berlawanan "Kecuali jika saya melewatkan sesuatu dalam pertanyaan, tidak ada jawaban yang benar, hanya jawaban berdasarkan asumsi. Ukuran kubus tidak ditentukan Yaitu 10 kaki kubik, 1000 kaki kubik dll. Ukuran semut tidak ditentukan Yaitu taman kecil, tukang kayu, raksasa merah dll, Jenis laba-laba tidak didefinisikan (untuk menentukan ukuran langkah) Kebun kecil IE, Tarantula dll. JIKA Anda menggabungkan semua "tidak didefinisikan "variabel. jawabannya bisa 0 langkah atau jumlah langkah tidak ditentukan / tak terbatas.


3
Jawaban ini tidak akan membuat seseorang naik ke tingkat wawancara berikutnya kecuali mungkin untuk posisi berkebun.
whuber

1
Dalam hal ini cukup jelas bahwa 'langkah' berarti 'perpindahan dari satu simpul (sudut) ke simpul yang berdekatan', dan cukup jelas apa yang dimaksud "sudut berlawanan" dari sebuah kubus - ambil unit kubus misalnya - jika semut berada di sudut (x, y, z) pada sebuah unit kubus, laba-laba berada di (1-x, 1-y, 1-z) (jadi jika semut di tempat asalnya, laba-laba di di (1,1) , 1)). Dengan demikian, tidak ada kekhawatiran Anda yang secara substansial terkait dengan pertanyaan yang diajukan. [Catatan untuk pemilih: Meskipun saya tidak berpikir ini adalah jawaban yang bagus tanpa suntingan substantif, saya tidak berpikir ini harus menjadi subjek dari penghapusan suara - cukup suara naik dan turun]
Glen_b -Reinstate Monica

@ Glen_b Karena tampaknya mencari kejelasan pada pertanyaan-pertanyaan khusus, saya pikir ini mungkin dimaksudkan sebagai komentar daripada jawaban yang substantif.
Silverfish

1
@Silverfish Anda mungkin benar, tetapi kemudian ditutup sebagai 'bukan jawaban'. Saya membacanya sebagai upaya untuk mengatakan "pertanyaan ini tidak dapat dijawab", yang biasanya saya anggap sebagai jawaban ketika didukung dengan alasan, tetapi saya pikir alasannya hanya berdasarkan pada kesalahpahaman dari pertanyaan itu.
Glen_b -Reinstate Monica
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.