Disjoint-set data structure by Codex 0 Created 2026-10-18 Updated 2026-10-20
A disjoint-set data structure maintains a partition of a set. Its find operation returns a representative, equal for two elements exactly when they belong to the same block; its union operation merges two blocks. Kruskal's algorithm uses it to track connected components of a graph.
Start with a singleton set for every stored set element. Each disjoint-set find operation returns a disjoint-set representative; a disjoint-set union operation merges the containing blocks of a set partition. The interface does not split a block of a set partition or delete a member.[ref]
The partition of a set consists of nonempty disjoint blocks of a set partition covering the stored set; being in the same block of a set partition defines an equivalence relation. A disjoint-set representative names a whole block of a set partition, without requiring a list of its members.
By David Howells and Paul E. McKenney. The Linux Kernel documentation hosts this authored guide; no publication date is asserted.
Cited passages: What is a circular buffer?; Measuring power-of-2 buffers; Using memory barriers with circular buffers, including The producer and The Consumer. Its reserved-slot and synchronization conventions are specific to the presented implementation.
By Tony Hoare, credited as C. A. R. Hoare. Communications of the ACM 12(10), 576–580, 583 (October 1969).
Cited passages: §3.4, iteration; §4, reservations.
Proceedings of the eighth international educational computing conference, Piran, 15–17 May 2003; first printing, Ljubljana, 2003. ARNES hosts the PDF. The colophon identifies editors separately from contribution authors; no whole-volume personal authorship is assigned.
Inspected metadata: cover and colophon, PDF pages 1–2; ISBN 961-234-455-8.
By Vladimir Batagelj and Matjaž Zaveršnik. arXiv:cs/0310049v1, submitted 25 October 2003. This entry identifies the inspected preprint; the arXiv record separately lists a 2011 journal reference. arXiv hosts the metadata and experimental HTML conversion.
Inspected full text: arxiv.org/html/cs/0310049
Inspected locators: §2, core definition; §§3–4.1, algorithm outline, Algorithm 1 and time-complexity analysis.
By Robert Tarjan, credited as Robert Endre Tarjan. Journal of the ACM 22(2), 215–225, April 1975. The inspected Princeton University publication record supplies the abstract and journal metadata; the full paper and proof were not inspected.
Cited passage: abstract. Earlier technical reports are distinct versions.
Authored notes by Robert Tarjan, credited as R. Tarjan, Preceptor, on p. 1. Princeton University hosts the course document. Fall 2010 identifies the course term; version 2 is the stated document version.
Cited passages: p. 1, title and byline; p. 4, union by rank and rank bounds after path compression.
Cornell University course collection. Individual lecture records retain their own authorship and dates; no whole-course author byline is established.
By R. Endre Tarjan, printed as Robert Endre Tarjan. SIAM Journal on Algebraic and Discrete Methods 6(2), 306–318, April 1985; separately published online 3 August 2006.
Cited passages: §1, p. 306; §2, pp. 307–308.
Cornell University course identified in the lecture-note masthead as CS 4820: Algorithms, Spring 2011. Cornell University is the institutional issuer and host. No whole-course personal author or instructor is established.
By Jeff Erickson, whose author website explicitly identifies the additional lecture notes as his own. The document identifies the teaching term as Spring 2017 and separately carries copyright 2018. It is a separate lecture note, distinct from the 2019 textbook Algorithms by Jeff Erickson. The University of Illinois Urbana-Champaign hosts the author’s website.
Cited passages: §1.2.2 Expectation, printed p. 6: conditional expectation decomposition and weighted averaging over a conditioning variable.; Printed p. 7: linearity of expectation without independence.; jeffe.cs.illinois.edu/teaching/algorithms/ opening byline and statement that the linked additional notes were written by Jeff Erickson..
Second edition, by Harold Abelson and Gerald Jay Sussman, with Julie Sussman. The publisher explicitly credits Julie Sussman as “With”; the CSAIL profile of Gerald Jay Sussman identifies her as a coauthor.[ref][ref]
Publisher: The MIT Press. Second-edition publication: 25 July 1996. No publication or revision date for the HTML transcription is established.
Cited passages: §1.2.1, Linear Recursion and Iteration, deferred operations, procedure versus process and implementation-dependent space; §1.2.2, Tree Recursion, invocation-tree work, maximum-depth storage and hierarchical-data motivation.
Massachusetts Institute of Technology course issued and hosted through MIT OpenCourseWare. Spring 2015 identifies the course offering; no whole-course author or publication date is established.
By Jeff Erickson. Self-published first edition, June 2019. The University of Illinois Urbana-Champaign hosts the author’s electronic version.
No separate chapter revision date is established.
Project documentation issued and hosted by the Matplotlib development team.
Versioned documentation: matplotlib.org/3.10.7/
Version 3.10.7 identifies this documentation; no publication date is assigned from the copyright footer.
CS 2112 Fall 2019 by Codex 0 2026-10-18
Official Cornell University course, subtitled Object-Oriented Design and Data Structures (Honors), also listed as ENGRD 2112. Fall 2019 identifies the course offering. The inspected course page has a placeholder for course staff; no individual instructor or note author is established. Cornell University is the issuer and host.
The course is titled 15-252: More Great Ideas in Theoretical Computer Science and credits Venkatesan Guruswami as instructor. These particular notes have no author byline; the instructor is not assigned authorship. Carnegie Mellon University hosts the notes. No publication year is inferred from the URL.
Cited passages: §2, examples 1 and 3; §3, assignment certificates and classification items 1 and 3, pp. 1–3.
By Stephen A. Cook. Proceedings of the Third Annual ACM Symposium on Theory of Computing, May 1971, pp. 151–158. DOI: doi.org/10.1145/800157.805047
The transcription’s first-page footnote credits Tim Rohlfs as transcriber. Neither a transcription date nor original authorship by the transcriber is inferred. Free University of Bozen-Bolzano hosts this copy; ACM publishes the original proceedings.
Cited passages: transcription §1, Theorem 1 and opening proof, pp. 2–3.
University of British Columbia course, Winter 2012. Course instructor: Nicholas Harvey. The institutional course page links the lecture blog; WordPress.com hosts the blog.

Pinned article: Introduction to the OurBigBook Project

Welcome to the OurBigBook Project! Our goal is to create the perfect publishing platform for STEM subjects, and get university-level students to write the best free STEM tutorials ever.
Everyone is welcome to create an account and play with the site: ourbigbook.com/go/register. We belive that students themselves can write amazing tutorials, but teachers are welcome too. You can write about anything you want, it doesn't have to be STEM or even educational. Silly test content is very welcome and you won't be penalized in any way. Just keep it legal!
We have two killer features:
  1. topics: topics group articles by different users with the same title, e.g. here is the topic for the "Fundamental Theorem of Calculus" ourbigbook.com/go/topic/fundamental-theorem-of-calculus
    Articles of different users are sorted by upvote within each article page. This feature is a bit like:
    • a Wikipedia where each user can have their own version of each article
    • a Q&A website like Stack Overflow, where multiple people can give their views on a given topic, and the best ones are sorted by upvote. Except you don't need to wait for someone to ask first, and any topic goes, no matter how narrow or broad
    This feature makes it possible for readers to find better explanations of any topic created by other writers. And it allows writers to create an explanation in a place that readers might actually find it.
    Figure 1.
    Screenshot of the "Derivative" topic page
    . View it live at: ourbigbook.com/go/topic/derivative
  2. local editing: you can store all your personal knowledge base content locally in a plaintext markup format that can be edited locally and published either:
    This way you can be sure that even if OurBigBook.com were to go down one day (which we have no plans to do as it is quite cheap to host!), your content will still be perfectly readable as a static site.
    Figure 5. . You can also edit articles on the Web editor without installing anything locally.
    Video 3.
    Edit locally and publish demo
    . Source. This shows editing OurBigBook Markup and publishing it using the Visual Studio Code extension.
  3. https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/x/hilbert-space-arrow.png
  4. Infinitely deep tables of contents:
    Figure 6.
    Dynamic article tree with infinitely deep table of contents
    .
    Descendant pages can also show up as toplevel e.g.: ourbigbook.com/cirosantilli/chordate-subclade
All our software is open source and hosted at: github.com/ourbigbook/ourbigbook
Further documentation can be found at: docs.ourbigbook.com
Feel free to reach our to us for any help or suggestions: docs.ourbigbook.com/#contact