Problem. Are B trees are not trees? I don't buy the definition used in the page. 168.28.180.30 (talk) 14:13, 27 November 2017 (UTC)Reply
| This is the talk page for discussing improvements to the Tree (abstract data type) article. This is not a forum for general discussion of the subject of the article. |
Article policies
|
| Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
| Archives: 1Auto-archiving period: 12 months |
| This It is of interest to the following WikiProjects: | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
Problem. Are B+ trees are not trees? I don't buy the definition used in the page. 168.28.180.30 (talk) 14:13, 27 November 2017 (UTC)
While it is true that no node can be ancestor to itself in a tree, that's also true in some directed acyclic graphs which are not trees, since there are multiple paths between pair of nodes but they don't form a directed cycle (Say a ->b, a->c, b->d, c->d). So this is a necessary but not sufficient condition fro a directed graph to be a tree and doesn't belong in the definition. It's true this article is about the data structure, not the mathematical entity, but I think the same holds, e.g. simple recursive trasversal algorithms would fail if there were multiple paths between nodes. — Preceding unsigned comment added by A1957 (talk • contribs) 18:53, 5 May 2022 (UTC)
This section is probably more math than is needed for or wanted by a general encyclopedia audience. It might be better presented in a math wikibook? -- Beland (talk) 16:06, 10 August 2020 (UTC)
The Mathematical definition section contains mathematical definitions of the most elementary structures that are relevant to the notion of tree in the context of computing. Unordered tree is the highest possible abstraction - just a single relation between nodes. Ordered tree is the most important refinemement - just add one more relation between nodes. These two families of structures are absolutely indispensable whenever we want to speak about mathematical definitions relevant to trees in computing. If also naming capabilities of trees are taken into account (like those in file systems or JSON data) then the structure defined in Using names and called nested dictionary is presumably the most important abstraction for the notion of labelled trees.
Therefore, in the mathematical aspect, the presented families of structures (Unordered tree, Ordered tree, Nested dictionary) provide the greatest possible simplification for the subject of trees and labelled trees in computing.
I can think of only one half-valid objection to the word "simplification" used here, namely that the section does not simplify the subject by only considering the finite case. Indeed, imposing the condition of finiteness to the structures (i.e. assuming that the set X of nodes, or the set of A of arrows is finite) would allow to use the notion of acyclicity instead of well-foundedness, to use natural numbers instead of ordinal numbers, as well as to omit the last condition about the sibling order (including the omission of the note that the condition can be omitted). Plus ACC for the child-to-parent relation could be replaced by the acyclicity condition, i.e. by the condition of being a DAG. This gain would not compensate for the loss, the main reason here being the fact that infinite trees have their place in computing.
There can also be arguments against the word "indispensable". The structures are indispensable as long as trees are based on the concept of a node - which is the case of the article. In some publications, trees are regared as "terms in some algebra", with no concept of a node in the definitions. However, when the underlying structures are diagrammatized, it turns out that they correspond to accessible pointed graphs in which nodes can share non-leaf children. [a] (This is a different situation than with "arrow trees" where only leaf nodes can be shared - thus there is a tree of arrows.) Apart from that, the mathematical apparatus used in such publications is less elementary than that one used in the article's section.
Since each subsection provides explanation for the "greatest possible simplification", removing any subsection would result in the whole section becoming less explanatory. At present, the only subsection that can be considered >90% excessive (redundant) is Definition using horizontal order. This section has been created mainly in response to the "citation needed" tag added in the 893343983-revision by User:Sderose.
Thus, IMHO, the main question is not about the length of the "Mathematical definition" section, but about the existence of the section. If you think that mathematical definitions have no place in the article (or even in any CS article) then be aware that the article has been listed as one of the 57 vital CS articles in Mathematics. You can also have a look at some posts on this talk page (Is tree a tree?, Are children trees?, Undefined definition) to get an idea about the possible consequences of "demathematizing" this article.
Hundblue (talk) 15:11, 11 August 2020 (UTC)
I don't quite understand the term of interest to a general audience
.
How does such a term apply to e.g. the mathematical articles refered to by the section text (partial order, transitive closure, linear extension, hypergraph, ...)?
The "Mathematical definition" section is aimed at those readers who want to see how the notion is described mathematically.
As for whether or not the amount of provided definitions is appropriate, the main criteria that are in favor of not reducing the present amount are:
I think the subject is of such a fundamental importance to computer science / computing, that multitudes of mathematical descriptions are appropriate. Let us make an overview of the presented definitions (in the (t~...) definitions below, "unordered tree" is often abbreviated to "tree").
The only definition that is apparently excessive is (o~2). It is too similar to (o~1) and should perhaps be dissolved into notes about (o~1) so that links to the sources are preserved.
The other candidates for reduction which I can think of are (t~6) and (o~3). The (t~6) is just an inductive construction of (X, ≤) with explicit presentation of induction steps. This serves as a basis for the more important (t~7) where there are no induction steps. Instead, a reference is made to the presentation in (t~6). Thus, removing (t~6) would require some additions to (t~7) so that the accuracy is preserved.
The (o~3) definition (X, lc, rs) of ordered trees can possibly be made "less excessive" by merging it into the previous subsection (Generating structure) and perhaps removing the prescription about how (X, ≤V, ≤S) is recovered.
Making other reductions in the above definitions would result, IMHO, in the "Mathematical definition" section becoming less valuable, that is, less valuable to readers that are interested in mathematical description of the subject.
Hundblue (talk) 14:11, 24 August 2020 (UTC)
References
It seems to me that you brought up the question of existence of the Mathematical definition section. This question can be dissolved into the following fundamental questions:
Of course, the (B) question only has sense if the (A) question is answered positively.
As a supporting argument for the positive answer to the (B) question, I mentioned (in August 2020) the fact that the article has been listed as one of the vital CS articles in Mathematics. Now you pointed out Linked list as an example of another article from the same list. This article contains no mathematical definition of the subject (i.e. of linked lists). Since the Linked list article is a B-class article (thus of higher quality rating than Tree (data structure) which is C-class) one can conclude that being classified as a "vital CS article in Mathematics" is not a sufficient reason for the presence of a mathematical definition of the subject. In particular, there is no place for (or no reason to place) the "Mathematical definition" section in the Tree (data structure) article. Is this your reasoning?
Let us formulate the above as general conditions:
To me, the above conditions (1)(2) are contradictory. If Linked list is a vital CS article in Mathematics then the lack of a mathematical definition is just a deficiency of the article. Maybe this deficiency is caused by an unclear distinction between Linked list and List (abstract data type). Interestingly, the latter article does have an Abstract definition section but, simultaneously, without the page being listed as a vital CS article in math. Or maybe one can ask if there is a mathematical definition of linked lists at all, especially such one that distinguishes linked lists from Array data structures. In this case it is questionable, why Linked list, Array data structure (...) are classified as vital CS articles in Mathematics.
Similarly, the opinion of User:Basbodart, namely that mathematical definitions should not appear in a CS article), is contradictory to the mere existence of the vital CS articles in Mathematics category.
If the (B) question about existence is answered to the positive, then there is a subsequent
My answer to this is that the size should be proportional to the importance of the subject. Since the importance is crucial, it is OK if the Mathematical definition section is is very large. This is what I already have expressed in August 2020. All information in the Mathematical definition section is focused on the most possible simplification of the subject. The definitions of unordered trees, ordered trees, edge-labelled trees are most elementary possible, provided that the case of infinite trees is taken in consideration.
There are some parts of the text that can be considered excessive and thus can be reduced - see my notes from August 2020. To repeat:
Making other reductions [...] would result [...] in the [...] section becoming less valuable, that is, less valuable to readers that are interested in mathematical description of the subject.
I am afraid that this will also apply to your attempt to pull out the programming-related examples and the context necessary to understand them, and cut the rest
. This will likely cause more damage than gain.
The concept of general audience readers
has also already been discussed in August 2020. To repeat: The "Mathematical definition" section is aimed at those readers who want to see how the notion is described mathematically. If general audience readers don't want to see mathematical definitions then they just can skip the section.
I am strongly opposed to a solution in which non-mathematical descriptions are presented as mathematical definitions. There are plenty such cases in the literature and most of them just provide a flawed definition. Even the current wording of the introductory paragraph would be such a case, but fortunately, there is no claim that this is a "definition".
Hundblue (talk) 17:43, 3 April 2022 (UTC)
I just dropped the "Unordered tree" subsection of "Mathematical definition". A lot of material there does not in fact appear to be defining the tree data structure, but relating trees to other mathematical structures, which is wandering off topic. That sort of thing might be more relevant to Tree (graph theory) or to the other mentioned mathematical structures. There were also some mention of how trees are used in specific applications. It's weird to have examples of applications mixed in with what is supposed to be a section on definitions, so I moved those mentions to the "Applications" section.
In addition to the problems of length and relevance, the material I removed was almost entirely unreferenced. (There were a few references that support one line each out of a long section, which it wouldn't make sense to leave in on their own without context.) Wikipedia:Verifiability requires that material "any material whose verifiability is challenged or likely to be challenged" have inline citations to reliable sources. Given the perils of relying on editors to verify abstract mathematical concepts on their own, I'm hereby requesting those citations before any material is re-added. -- Beland (talk) 18:38, 3 April 2022 (UTC)
I also dropped this section per WP:V, because it is almost completely unreferenced. It also seems to be introducing novel concepts that are not part of the process of defining trees. The only references are to a model of JSON and MongoDB documents as trees. This is more appropriate for the "Applications" section, where JSON is already mentioned. I added a mention of MongoDB on JSON#Uses for completeness. -- Beland (talk) 20:10, 3 April 2022 (UTC)
I dropped this section as well. It had similar problems in that most sections introduced possibly original concepts not supported by citations and not part of the definition of a tree. In some cases there were citations that failed verification of the claims they were supposed to support. Some of the material here had more to do with tree traversal or XPaths than defining trees, and is out of scope of this article.
The first two sections (the intro to "Ordered tree" and "Definition using horizontal order") did have plausible references (though there are some opinions that fail verification and violate WP:NPOV, and probably not all the other material in these sections is actually supported by these sources) and were reasonably related to the purpose of giving a mathematical definition. I dropped these sections because they appear to be defining the concept in graph theory, and so would be more appropriate at Tree (graph theory)#Ordered tree. I did not move them there because 1.) it seems like too much detail for that article, and 2.) there are cross-references to other (deleted) sections in this article which would need to be cleaned up. If you want to restore a cleaned-up version of this material on that article, my advice would be to make it a lot shorter, possibly just citing the referenced sources and noting that they give formal definitions, so anyone who is interested in that can just click through to those articles. -- Beland (talk) 20:38, 3 April 2022 (UTC)
"Alternatively, a tree can be defined abstractly as a whole (globally) as an ordered tree,..." OR (A concretely defined tree does not require separation to be ordered) "with a value assigned to each node. Both these perspectives are useful: while a tree can be analyzed mathematically as a whole, when actually represented as a data structure it is usually represented and worked with separately by node (rather than as a set of nodes and an adjacency list of edges between nodes, as one may represent a digraph, for instance). For example, looking at a tree as a whole, one can talk about "the parent node" of a given node, but in general, as a data structure, a given node only contains the list of its children but does not contain a reference to its parent (if any)." ADDING You hide the root NODE and declare the parent node the same as "the child node". I maintain, this is bad form, let's start with computationally... And I have but momentarily tempered my accusing for the sake of one... — Preceding unsigned comment added by 156.99.40.14 (talk) 18:30, 27 November 2021 (UTC)
There is a move discussion in progress on Talk:Associative array which affects this page. Please participate on that page and not in this talk page section. Thank you. —RMCD bot 00:32, 27 January 2022 (UTC)
Merge this page with https://en.wikipedia.org/wiki/M-ary_tree ? Or at least state what the difference is more clearely. — Preceding unsigned comment added by Agowa (talk • contribs) 08:09, 10 May 2022 (UTC)
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.