Strassen algorithm for matrix multiplication complexity analysis
up vote
3
down vote
favorite
I see everywhere that the recursive equation for the complexity of Strassen alg is:
$$T(n) = 7T(tfrac{n}{2})+O(n^2).$$ This is not so clear to me.
The parameter $n$ is supposed to be the size of the input, but it seems that here it is one dimension of a matrix while the input size is actually $n^2$.
Also, each matrix of the input is divided to 4 sub matrices so it seems the recursive equation should be $$T(n) = 7T(tfrac{n}{4}) + O(n).$$
complexity-theory divide-and-conquer matrix
New contributor
add a comment |
up vote
3
down vote
favorite
I see everywhere that the recursive equation for the complexity of Strassen alg is:
$$T(n) = 7T(tfrac{n}{2})+O(n^2).$$ This is not so clear to me.
The parameter $n$ is supposed to be the size of the input, but it seems that here it is one dimension of a matrix while the input size is actually $n^2$.
Also, each matrix of the input is divided to 4 sub matrices so it seems the recursive equation should be $$T(n) = 7T(tfrac{n}{4}) + O(n).$$
complexity-theory divide-and-conquer matrix
New contributor
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I see everywhere that the recursive equation for the complexity of Strassen alg is:
$$T(n) = 7T(tfrac{n}{2})+O(n^2).$$ This is not so clear to me.
The parameter $n$ is supposed to be the size of the input, but it seems that here it is one dimension of a matrix while the input size is actually $n^2$.
Also, each matrix of the input is divided to 4 sub matrices so it seems the recursive equation should be $$T(n) = 7T(tfrac{n}{4}) + O(n).$$
complexity-theory divide-and-conquer matrix
New contributor
I see everywhere that the recursive equation for the complexity of Strassen alg is:
$$T(n) = 7T(tfrac{n}{2})+O(n^2).$$ This is not so clear to me.
The parameter $n$ is supposed to be the size of the input, but it seems that here it is one dimension of a matrix while the input size is actually $n^2$.
Also, each matrix of the input is divided to 4 sub matrices so it seems the recursive equation should be $$T(n) = 7T(tfrac{n}{4}) + O(n).$$
complexity-theory divide-and-conquer matrix
complexity-theory divide-and-conquer matrix
New contributor
New contributor
edited 1 hour ago
Yuval Filmus
188k12177339
188k12177339
New contributor
asked 2 hours ago
user97899
161
161
New contributor
New contributor
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
3
down vote
It's back to the size of the matrix. Suppose the original matrix is $ntimes n$. Hence we will consider $T(n)$ as a computation of two matrix with size of $ntimes n$. When we divide the original matrix to 4 part, size of each part is $frac{n}{2}times frac{n}{2}$. Hence, the computation cost of multiplication of two matrices with this size is $T(frac{n}{2})$.
add a comment |
up vote
0
down vote
It's true that the parameter $n$ usually denotes the size of the input, but this is not always the case. For square matrix multiplication, $n$ denotes the number of rows (or columns). For graphs, $n$ often denotes the number of vertices, and $m$ the number of edges. For algorithms on Boolean functions, $n$ denotes the number of inputs, though the truth table itself has size $2^n$. There are many other examples.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "419"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
user97899 is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f101638%2fstrassen-algorithm-for-matrix-multiplication-complexity-analysis%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
It's back to the size of the matrix. Suppose the original matrix is $ntimes n$. Hence we will consider $T(n)$ as a computation of two matrix with size of $ntimes n$. When we divide the original matrix to 4 part, size of each part is $frac{n}{2}times frac{n}{2}$. Hence, the computation cost of multiplication of two matrices with this size is $T(frac{n}{2})$.
add a comment |
up vote
3
down vote
It's back to the size of the matrix. Suppose the original matrix is $ntimes n$. Hence we will consider $T(n)$ as a computation of two matrix with size of $ntimes n$. When we divide the original matrix to 4 part, size of each part is $frac{n}{2}times frac{n}{2}$. Hence, the computation cost of multiplication of two matrices with this size is $T(frac{n}{2})$.
add a comment |
up vote
3
down vote
up vote
3
down vote
It's back to the size of the matrix. Suppose the original matrix is $ntimes n$. Hence we will consider $T(n)$ as a computation of two matrix with size of $ntimes n$. When we divide the original matrix to 4 part, size of each part is $frac{n}{2}times frac{n}{2}$. Hence, the computation cost of multiplication of two matrices with this size is $T(frac{n}{2})$.
It's back to the size of the matrix. Suppose the original matrix is $ntimes n$. Hence we will consider $T(n)$ as a computation of two matrix with size of $ntimes n$. When we divide the original matrix to 4 part, size of each part is $frac{n}{2}times frac{n}{2}$. Hence, the computation cost of multiplication of two matrices with this size is $T(frac{n}{2})$.
answered 2 hours ago
OmG
1,363412
1,363412
add a comment |
add a comment |
up vote
0
down vote
It's true that the parameter $n$ usually denotes the size of the input, but this is not always the case. For square matrix multiplication, $n$ denotes the number of rows (or columns). For graphs, $n$ often denotes the number of vertices, and $m$ the number of edges. For algorithms on Boolean functions, $n$ denotes the number of inputs, though the truth table itself has size $2^n$. There are many other examples.
add a comment |
up vote
0
down vote
It's true that the parameter $n$ usually denotes the size of the input, but this is not always the case. For square matrix multiplication, $n$ denotes the number of rows (or columns). For graphs, $n$ often denotes the number of vertices, and $m$ the number of edges. For algorithms on Boolean functions, $n$ denotes the number of inputs, though the truth table itself has size $2^n$. There are many other examples.
add a comment |
up vote
0
down vote
up vote
0
down vote
It's true that the parameter $n$ usually denotes the size of the input, but this is not always the case. For square matrix multiplication, $n$ denotes the number of rows (or columns). For graphs, $n$ often denotes the number of vertices, and $m$ the number of edges. For algorithms on Boolean functions, $n$ denotes the number of inputs, though the truth table itself has size $2^n$. There are many other examples.
It's true that the parameter $n$ usually denotes the size of the input, but this is not always the case. For square matrix multiplication, $n$ denotes the number of rows (or columns). For graphs, $n$ often denotes the number of vertices, and $m$ the number of edges. For algorithms on Boolean functions, $n$ denotes the number of inputs, though the truth table itself has size $2^n$. There are many other examples.
answered 1 hour ago
Yuval Filmus
188k12177339
188k12177339
add a comment |
add a comment |
user97899 is a new contributor. Be nice, and check out our Code of Conduct.
user97899 is a new contributor. Be nice, and check out our Code of Conduct.
user97899 is a new contributor. Be nice, and check out our Code of Conduct.
user97899 is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Computer Science Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f101638%2fstrassen-algorithm-for-matrix-multiplication-complexity-analysis%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown