-is-this-fft-'s blog

By -is-this-fft-, 19 months ago, In English

Perhaps this will be helpful to some. The reason I'm writing this is that these words are used often, and a lot of people understand them the wrong way. This means that if you read some advice containing these words and misunderstand them, you will walk away with a wrong idea.

  • Constructive. Refers to problems where a significant part of the solution is about coming up with a pattern that satisfies some properties, e.g. a grid coloring or a graph. A blatant example is this. "Constructive" does not mean the same as "ad hoc", nor does it mean "a problem where no well-known algorithm is needed", nor "a problem where you have to make observations".
  • Doubt. You have a doubt when you are not sure about something. That is, you have a pretty good idea, but something seems strange or a little off. If you have no clue, then it is not a doubt.
  • Observation. An observation is a friendlier synonym for words like "theorem", "lemma" and "proposition". It is a (usually relatively short) chain of reasoning leading to a conclusion. "Observing" does not in general mean looking at input/output pairs and noticing patterns.
  • Plagiarism, plagiarize. Refers to the act of copying itself, not to its detection. For example, "I solved this problem, my friend plagiarized it from me" is correct, "my friend copied my solution and got plagiarized" is not.
  • Plague. A disease. Doesn't have much to do with plagiarism.
  • Solution, solve. These kind of have two meanings. Almost every problem in CP has two parts: first, you think, and when you have thought something up, you code. "Solving" primarily refers to the former and only secondarily to the latter. When people tell you to solve more problems, they mostly mean that you have to think more, not implement more. Reading an editorial and then implement the idea they give there is not "solving".
  • Subquadratic complexity. Refers to any complexity strictly less than $$$n^2$$$ (formally, any complexity in $$$o(n^2)$$$). This includes complexities in $$$\Theta(1)$$$, $$$\Theta(\log n)$$$, $$$\Theta(n)$$$ etc., not only things like $$$\Theta(n^{1.999})$$$.
  • Trivial. Something that does not require any special insight beyond what is already given. It does not necessarily mean "easy" or "simple". For example, it would be valid to say that something is "a trivial FFT problem" if the application of FFT is fairly straightforward. This statement doesn't imply that the problem would be easy for everyone, including beginners who have never even heard of FFT. In a similar fashion, a long calculation is often called trivial if it is all pretty much mechanical.
  • Vote: I like it
  • +330
  • Vote: I do not like it

»
19 months ago, # |
  Vote: I like it -11 Vote: I do not like it

orz

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +175 Vote: I do not like it

    u misused this word

  • »
    »
    19 months ago, # ^ |
    Rev. 2   Vote: I like it +6 Vote: I do not like it

    what is orz?

    • »
      »
      »
      8 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      $$$\text{orz}$$$ is a posture emoticon representing a kneeling, bowing, or comically fallen over person. So it just looks like the a person with his head, hands and feet on the ground. Show respect basically.

»
19 months ago, # |
Rev. 2   Vote: I like it +30 Vote: I do not like it

Complexity: Refers to the inherent difficulty of a problem in terms of there not being a very efficient algorithm that solves it in the general case. The asymptotic running time of a specific algorithm is not a "complexity", and "complexity" is also not a synonym for Landau notation. For example, sorting has subquadratic (time) complexity, but merge sort has subquadratic running time.

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +18 Vote: I do not like it

    sorting has subquadratic (time) complexity, but merge sort has subquadratic running time

    so it is the same??

    Isn't time (and for that matter, space) complexity simply the asymptotic run time of the program? (worst case, average case, doesn't matter)

    • »
      »
      »
      19 months ago, # ^ |
      Rev. 2   Vote: I like it +6 Vote: I do not like it

      It is not the same: one is a property of a problem, while the other is a property of an algorithm. There are sorting algorithms, like bubble sort, whose worst-case running time is not subquadratic. Sorting still has subquadratic complexity though, because there exist faster algorithms.

      I think the source of the confusion is that novices usually get introduced to the concept of running time, complexity and asymptotics at the same time, but you can have complexity classes that are defined in terms of exact numbers of operations, not asymptotics. (It just would be pretty model-dependent, so typically this is not very useful when not combined with asymptotic notation.)

      Of course, among frequent misuses of words, this one is really frequent, to the point where respected computer scientists might disagree with my characterization (typically they are not working on complexity theory though). However, I still cringe every time I see it.

»
19 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Can't constructive also mean that you need to print the construction and not just the answer?

  • »
    »
    19 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    So are "dp with restoring the answer" problems constructive?

    • »
      »
      »
      19 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I'd say yes if it's not trivial

  • »
    »
    19 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    In constructive problems, the construction usually is the answer. You can start with printing one number, but it's usually very easy to find it if you have the construction (e.g. min. number of inversions in a permutation satisfying some rules). Often enough, you figure out both together, but even in that case, you could only print the construction and solve the same problem.

»
19 months ago, # |
  Vote: I like it +52 Vote: I do not like it

Subquadratic — a complexity such that there does not exist an algorithm of such complexity for converting two numbers from one base to another.(Python devs)

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    I thought they acknowledge it's existence but think subquadratic is too slow

»
19 months ago, # |
  Vote: I like it +5 Vote: I do not like it

I think you should explain what ad hoc really means too? It seems to be used as "requiring a large amount of ideas for solving", but in fact the definition of the word itself is only about "a solution specifically made for this exact problem".

»
19 months ago, # |
  Vote: I like it +6 Vote: I do not like it

How about this misused term $$$O(n \log n) = O(n^2)$$$ but $$$O(n^2) \neq O(n \log n)$$$

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    I think you meant $$$\subseteq$$$ and not $$$=$$$

    • »
      »
      »
      19 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Oh, I thought we can just use equal sign for comparing two complexities, as there were several editorials where they used $$$O(f(n)) = O(g(n))$$$.

      • »
        »
        »
        »
        19 months ago, # ^ |
          Vote: I like it +13 Vote: I do not like it

        Well I don't know about big O-s on both sides but yes, it is common to write things like

        $$$\frac11 + \frac12 + \cdots + \frac1n = O(\log n)$$$

        or $$$2 n \log n = O(n \log n)$$$ or indeed $$$n \log n = O(n^2)$$$.

        This is formally wrong, but it is correct in the sense that it is a well-established (abuse of) notation so people know what it means, so it's not really the type of thing i wanted to cover in the blog.

        • »
          »
          »
          »
          »
          19 months ago, # ^ |
          Rev. 2   Vote: I like it +1 Vote: I do not like it

          I think this is actually formally correct right? Per Wikipedia definition, $$$f(x) = \mathcal O(g(x))$$$ if there exists some constants $$$M, x_0$$$ such that $$$\forall x \geq x_0, |f(x)| \leq M g(x)$$$. So it's legal to write $$$2n \log n = \mathcal O(n \log n)$$$. I agree using big O on both sides is probably abuse of notation though.

          EDIT: I just realized I cited Wikipedia as a source for formality which is a bit ironic. For what it's worth, I've seen this same definition and notation used in several textbooks as well.

          • »
            »
            »
            »
            »
            »
            19 months ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            I meant "does not use a standard definition of equality", i.e. equality as functions or sets.

  • »
    »
    19 months ago, # ^ |
    Rev. 2   Vote: I like it -40 Vote: I do not like it

    Am eu o identitate mai calitativa:

    $$$O(N*sqrt(N)*log(N)) = O(n^2)$$$ but $$$O(n^2) = O(N*sqrt(N)*log(N))$$$

»
19 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

What about classic or common or famous task, what word to use for so called tasks which are like on cses ?? what should be cutoff for task to be called as famous task.

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    I haven't heard people say "famous". Indeed most problems in CSES are classical. I don't know how to meaningfully quantify what the cutoff should be.

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +9 Vote: I do not like it

    I think a lot of people would already use the word standard in situations like this.

»
19 months ago, # |
  Vote: I like it +34 Vote: I do not like it

there are people who are misusing the word "racism", i would like to hear your explanations and counterexamples

»
19 months ago, # |
  Vote: I like it -17 Vote: I do not like it

I remember when dalex used to teach Indians English. He got downvoted tho...

  • »
    »
    19 months ago, # ^ |
    Rev. 2   Vote: I like it -6 Vote: I do not like it

    deleted. ironically my own phrasing was bad too :D. to clarify, I meant that if the original blog author would've rephrased his blog to not target a specific group of people, not treat other opinions as invalid, and have a less condesending tone, the reaction naturally would've been much less negative. it was not a comment about the content of that blog, just a joke

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +6 Vote: I do not like it

    That debate was also about prescriptive v/s descriptive grammar to a certain extent, as adamant pointed out in the comments on that blog. The usage of stuff like "question" and "giving exams" stems from regional colloquialisms that arise from translating word-to-word from the native language in context, and the same can be said (to a certain extent) about "doubt", since these words are used "incorrectly" even by teachers (not all of them, though), and students tend to pick up these habits from them.

    However I feel like this blog is more about how technical words are being misused and how that leads to misunderstandings. When discussing problems and problem-solving, there are certain well-established (but perhaps unspoken) meanings for certain words/phrases (like "constructive", "observation" and "subquadratic complexity") which leave little/no room for ambiguity and their meanings require a certain level of precision to be understood.

»
19 months ago, # |
  Vote: I like it 0 Vote: I do not like it

I don't mean to be dogmatic with this, as it is already difficult enough to express yourself in a different language other than your own, but the word plague is used for more things than just a disease.
It can be related to plagiarism in the sense that you can say, for example: "plagiarism is a plague in Codeforces". In the same way as the seven plagues of Egypt appear in the old testament.

  • »
    »
    19 months ago, # ^ |
      Vote: I like it +5 Vote: I do not like it

    Every word has a different meaning if you use it as a metaphor.

    • »
      »
      »
      19 months ago, # ^ |
        Vote: I like it +3 Vote: I do not like it

      As I said I don't mean to be dogmatic, but what I mentioned is the actual meaning of the word not a metaphor. The disease is usually referred as black death.

      Merriam-webster

»
19 months ago, # |
  Vote: I like it +1 Vote: I do not like it

"Observing" does not in general mean looking at input/output pairs and noticing patterns.

Not the only use, but you can observe a pattern. This word has multiple meanings in different contexts. (Btw there's a legitimate method in chemistry sometimes called "eyemetry" where you compare colour to a standardised colour scale, basically poor man's spectroscopy.)

Trivial. [...] It does not necessarily mean "easy" or "simple".

It's kinda gained this other meaning through usage among people who don't know the original meaning, but yeah, it's kind of a vulgar, pleb usage.

»
19 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Thanks for telling, I usually misuse the word constructive for like where you make the observations.

»
19 months ago, # |
  Vote: I like it -28 Vote: I do not like it

Give me contributions: Actually means "downvotes me please".