2
ブール行列の島を数える
ブール行列与えられた、0エントリは海を表し、1エントリは陸を表します。アイランドを垂直または水平に(ただし斜めではなく)隣接する1エントリとして定義します。X 0 1 1n×mn×mn \times mXX\mathrm X000111111 元の質問は、特定のマトリックス内の島の数を数えることでした。著者は再帰的な解決策(O(nm)O(nm)\mathcal{O}(nm)メモリ)について説明しました。 しかし、O(m)O(m)\mathcal{O}(m)またはO(n)O(n)\mathcal{O}(n)または\ mathcal {Oを使用してアイランドを動的にカウントするストリーミング(左から右、次に次の行まで)ソリューションを見つけることに失敗しました}(n + m)O(n+m)O(n+m)\mathcal{O}(n+m)メモリ(時間の複雑さに制限はありません)。それは可能ですか?そうでない場合、どうすればそれを証明できますか? count関数の特定の入力に対して期待される出力のいくつかの例: count⎛⎝⎜010111010⎞⎠⎟=1;count⎛⎝⎜101010101⎞⎠⎟=5;count⎛⎝⎜111101111⎞⎠⎟=1;count(010111010)=1;count(101010101)=5;count(111101111)=1; count\begin{pmatrix} 010\\ 111\\ 010\\ \end{pmatrix} = 1; % count\begin{pmatrix} 101\\ 010\\ 101\\ \end{pmatrix} = 5; % count\begin{pmatrix} 111\\ 101\\ 111\\ \end{pmatrix} = 1; count⎛⎝⎜⎜⎜1111100100010110100011011111⎞⎠⎟⎟⎟=2count(1111100100010110100011011111)=2 count\begin{pmatrix} 1111100\\ 1000101\\ 1010001\\ 1011111\\ \end{pmatrix} = 2 count(101111)=1count(101111)=1 count\begin{pmatrix} 101\\ …