2012-09-11 9 views
5

To pytanie wywiad:Znajdź skuteczny algorytm dla operacji macierzowej

Dla macierzy definiujemy operację, że gdy dodamy 1 do jednego wejścia, wszystkie okoliczne wpisy (w górę, w dół, left, right) zostanie również dodany przez 1. Biorąc pod uwagę macierz dodatnią, znajdź algorytm określający, czy macierz może zostać zbudowana z matrycy zerowej przy użyciu takiej operacji.

Co to jest skuteczny algorytm do rozwiązania problemu?

Obecnie mogę myśleć o użyciu wstecznego fragmentu, aby wypróbować wszystkie możliwe kombinacje, jednak zdecydowanie nie jest to skuteczne. Pytanie brzmi trochę jak gra Lights Off, ale tutaj nie jest to 0/1, co sprawia, że ​​jest bardziej skomplikowana.

Dzięki.

Edit:

Na przykład:

3 3 can be constructed from 0 0 -> 1 1 -> 2 2 -> 3 3 
1 2       0 0 1 0 1 1 1 2 
+0

Co się stanie, jeśli uderzę pierwszy lub ostatni col/rząd: Zawijanie lub cięcie? –

+0

@EugenRieck To odcina – Rannnn

+0

Twój przykład jest niemożliwy: 1/1/1/1 nie można utworzyć z zerowej matrycy ... –

Odpowiedz

1

algebry liniowej?

Cell i,j is touched x<sub>ij</sub> times. 

n zmienne i równania. Rozwiązać. O(n^6) według metody Gaussa, mogą istnieć inne szybsze metody.

Ponadto matryca jest wyjątkowa, więc może być w stanie ją przyspieszyć.

+1

Podejście, które wykorzystuje więcej struktury problemu, byłoby użycie 2-d FFT i twierdzenia o splotach - to, co masz, to splot nieznanej macierzy i wzorzec z 9 1 w kwadracie. Mógł mieć problem z uzyskiwaniem niecałkowitych odpowiedzi, ale jeśli push przychodzi, możesz użyć go z odgałęzieniem i połączeniem. – mcdowella

0

znalazłem kilka rzeczy (dla matrycy 2x2), chciałbym je najpierw udostępnić
-sum wszystkich elementów w macierzy powinien być podzielny przez 3 (wtedy tylko to jest możliwe).
-Mamy wyrazić danej matrycy w postaci wolno etapów roboczych

3 3 -> 2* 1 1 + 1* 1 1 
1 2  0 1   1 0 

nie byłoby pewne przypadki, w których nie może być wykonane np

5 3 ->2* 1 0 + 2* 1 1  = 4 2 
2 4  1 1   0 1  2 4 

5 3 - 4 2  = 1 1 (this is not allowed operation) 
2 4  2 4  0 0 
+0

Nieprawidłowe: macierz 3x3 '0 1 0/1 1 1/0 1 0' jest osiągalna (wykonaj operację tylko raz, do elementu środkowego), ale suma wszystkich elementów nie jest podzielna przez 3. – jrouquie

+0

Ponadto, 2x2 matrice '2 4/4 2' jest osiągalne (dwa razy dotknij dwóch przeciwległych rogów), ale nie ma sąsiednich elementów z różnicą ≤ 1. – jrouquie

+0

@jrouquie:" dziękuję za minus ", powinienem wspomnieć o 2x2 przypadkach. dostarczyć przypadek testowy w 2x2, gdzie suma nie jest podzielna przez 3, a wciąż macierz jest zdolna do zredukowania. "sąsiednie elementy z różnicą ≤ 1" były błędne. – k53sc

Powiązane problemy