Here are the answers to the assessment questions:
1. 2
2. 1
3. 4
4. 4
The key aspects of a splay tree are that accessing a node causes it to be rotated to the root, decreasing its future access time. This self-organizing behavior is what gives splay trees their efficiency.
The document describes splay trees, a type of self-adjusting binary search tree. Splay trees differ from other balanced binary search trees in that they do not explicitly rebalance after each insertion or deletion, but instead perform a process called "splaying" in which nodes are rotated to the root. This splaying process helps ensure search, insert, and delete operations take O(log n) amortized time. The document explains splaying operations like zig, zig-zig, and zig-zag that rotate nodes up the tree, and analyzes how these operations affect the tree's balance over time through a concept called the "rank" of the tree.
A balanced search tree data structure
NIST Definition: A binary search tree in which operations that access nodes restructure the tree.
Goodrich: A splay tree is a binary search tree T. The only tool used to maintain balance in T is the splaying step done after every search, insertion, and deletion in T.
Kingston: A binary tee with splaying
The document discusses heap sort, which is a sorting algorithm that uses a heap data structure. It works in two phases: first, it transforms the input array into a max heap using the insert heap procedure; second, it repeatedly extracts the maximum element from the heap and places it at the end of the sorted array, reheapifying the remaining elements. The key steps are building the heap, processing the heap by removing the root element and allowing the heap to reorder, and doing this repeatedly until the array is fully sorted.
Radix sort is a non-comparative sorting algorithm that sorts numeric keys by decomposing them into digits and sorting the digits individually. It works by representing keys as d-digit numbers in some base-k, then sorting the numbers by looking at one column of digits at a time from least to most significant. This requires d passes through the list, resulting in a time complexity of O(d(n+k)) where n is the number of keys and k is the maximum possible digit value, assuming d and k are constants. When d and k are O(n), the overall time complexity is O(n).
Splay trees are a type of self-adjusting binary search tree that optimizes access to frequently used elements. They have the potential to achieve better than O(log n) time bounds due to splaying operations that rotate frequently accessed nodes toward the root. There are two approaches to splaying - bottom-up splaying which uses three rotation cases (zig, zig-zag, zig-zig) to move a node to the root, and top-down splaying which starts at the top and recombines subtrees. Splay trees are used for operations like find, delete minimum, and removal through these splaying techniques.
Selection sort is a sorting algorithm that finds the smallest element in an unsorted list and swaps it with the first element, then finds the next smallest element and swaps it with the second element, continuing in this way until the list is fully sorted. It works by iterating through the list, finding the minimum element, and swapping it into its correct place at each step.
This is the second lecture in the CS 6212 class. Covers asymptotic notation and data structures. Also outlines the coming lectures wherein we will study the various algorithm design techniques.
Here are the answers to the assessment questions:
1. 2
2. 1
3. 4
4. 4
The key aspects of a splay tree are that accessing a node causes it to be rotated to the root, decreasing its future access time. This self-organizing behavior is what gives splay trees their efficiency.
The document describes splay trees, a type of self-adjusting binary search tree. Splay trees differ from other balanced binary search trees in that they do not explicitly rebalance after each insertion or deletion, but instead perform a process called "splaying" in which nodes are rotated to the root. This splaying process helps ensure search, insert, and delete operations take O(log n) amortized time. The document explains splaying operations like zig, zig-zig, and zig-zag that rotate nodes up the tree, and analyzes how these operations affect the tree's balance over time through a concept called the "rank" of the tree.
A balanced search tree data structure
NIST Definition: A binary search tree in which operations that access nodes restructure the tree.
Goodrich: A splay tree is a binary search tree T. The only tool used to maintain balance in T is the splaying step done after every search, insertion, and deletion in T.
Kingston: A binary tee with splaying
The document discusses heap sort, which is a sorting algorithm that uses a heap data structure. It works in two phases: first, it transforms the input array into a max heap using the insert heap procedure; second, it repeatedly extracts the maximum element from the heap and places it at the end of the sorted array, reheapifying the remaining elements. The key steps are building the heap, processing the heap by removing the root element and allowing the heap to reorder, and doing this repeatedly until the array is fully sorted.
Radix sort is a non-comparative sorting algorithm that sorts numeric keys by decomposing them into digits and sorting the digits individually. It works by representing keys as d-digit numbers in some base-k, then sorting the numbers by looking at one column of digits at a time from least to most significant. This requires d passes through the list, resulting in a time complexity of O(d(n+k)) where n is the number of keys and k is the maximum possible digit value, assuming d and k are constants. When d and k are O(n), the overall time complexity is O(n).
Splay trees are a type of self-adjusting binary search tree that optimizes access to frequently used elements. They have the potential to achieve better than O(log n) time bounds due to splaying operations that rotate frequently accessed nodes toward the root. There are two approaches to splaying - bottom-up splaying which uses three rotation cases (zig, zig-zag, zig-zig) to move a node to the root, and top-down splaying which starts at the top and recombines subtrees. Splay trees are used for operations like find, delete minimum, and removal through these splaying techniques.
Selection sort is a sorting algorithm that finds the smallest element in an unsorted list and swaps it with the first element, then finds the next smallest element and swaps it with the second element, continuing in this way until the list is fully sorted. It works by iterating through the list, finding the minimum element, and swapping it into its correct place at each step.
This is the second lecture in the CS 6212 class. Covers asymptotic notation and data structures. Also outlines the coming lectures wherein we will study the various algorithm design techniques.
- A red-black tree is a self-balancing binary search tree where each node is colored red or black. It maintains the properties that the black height of each path is equal and there are no adjacent red nodes, ensuring O(log n) time for operations.
- Common operations like insertion, deletion, and searching on a red-black tree work similarly to a binary search tree but may require rotations and color changes to maintain the red-black properties.
- Red-black trees are widely used in applications that require efficient search structures for frequently updated data like process memory management and functional programming data structures.
The document provides an introduction to theory of computation and automata. It defines key concepts such as symbols, alphabets, strings, languages, finite automata, deterministic finite automata (DFA), non-deterministic finite automata (NFA). It explains these concepts using examples and discusses their representation using transition diagrams, transition tables, and examples of DFAs recognizing specific languages.
This document discusses stacks, which are non-linear data structures that follow the LIFO (last in, first out) principle. Stacks have operations like push and pop that insert and remove elements from the top of the stack. Pushing adds an element and increments the top pointer, while popping removes an element and decrements the top pointer. Stacks have applications in expression evaluation, memory management, and recursion. The document provides algorithms and code examples for implementing push and pop operations on a stack.
These slides are about Splay Tree .
From these slides u can learn Basics of splay tree by definition and its examples.At the end its Advantages And Disadvantages.
Introductiont To Aray,Tree,Stack, QueueGhaffar Khan
This document provides an introduction to data structures and algorithms. It defines key terminology related to data structures like entities, fields, records, files, and primary keys. It also describes common data structures like arrays, linked lists, stacks, queues, trees, and graphs. Finally, it discusses basic concepts in algorithms like control structures, complexity analysis, and examples of searching algorithms like linear search and binary search.
The document summarizes the disjoint-set data structure and algorithms for implementing union-find operations on disjoint sets. Key points:
- Disjoint sets allow representing partitions of elements into disjoint groups and supporting operations to merge groups and find the group a element belongs to.
- Several implementations are described, including linked lists and rooted trees (forests).
- The weighted-union heuristic improves the naive linked list implementation from O(n^2) to O(m log n) time by merging shorter lists into longer ones.
- In forests, union-by-rank and path compression heuristics combine sets in nearly linear time by balancing tree heights and flattening paths during finds.
Insertion sort works by iterating through an array, inserting each element into its sorted position by shifting other elements over. It finds the location where each element should be inserted into the sorted portion using a linear search, moving larger elements out of the way to make room. This sorting algorithm is most effective for small data sets and can be implemented recursively or iteratively through comparisons and shifts.
This document discusses splay trees, a type of self-balancing binary search tree where frequently accessed elements are moved closer to the root through rotations. Splay trees provide O(log n) time for search, insert, and delete operations while being simpler to implement than other self-balancing trees. When an element is accessed in a splay tree, it is "splayed" or rotated to the root through zig, zig-zig, or zig-zag steps depending on its position. Splay trees prioritize frequently accessed elements but may become unbalanced if all elements are accessed sequentially. The document provides examples of splaying tree rotations and constructs splay trees for two example sequences.
B-Trees are tree data structures used to store data on disk storage. They allow for efficient retrieval of data compared to binary trees when using disk storage due to reduced height. B-Trees group data into nodes that can have multiple children, reducing the height needed compared to binary trees. Keys are inserted by adding to leaf nodes or splitting nodes and promoting middle keys. Deletion involves removing from leaf nodes, borrowing/promoting keys, or joining nodes.
Prim's algorithm is used to find the minimum spanning tree of a connected, undirected graph. It works by continuously adding edges to a growing tree that connects vertices. The algorithm maintains two lists - a closed list of vertices already included in the minimum spanning tree, and a priority queue of open vertices. It starts with a single vertex in the closed list. Then it selects the lowest cost edge that connects an open vertex to a closed one, adds it to the tree and updates the lists. This process repeats until all vertices are in the closed list and connected by edges in the minimum spanning tree. The algorithm runs in O(E log V) time when using a binary heap priority queue.
Artificial Intelligence: Introduction, Typical Applications. State Space Search: Depth Bounded
DFS, Depth First Iterative Deepening. Heuristic Search: Heuristic Functions, Best First Search,
Hill Climbing, Variable Neighborhood Descent, Beam Search, Tabu Search. Optimal Search: A
*
algorithm, Iterative Deepening A*
, Recursive Best First Search, Pruning the CLOSED and OPEN
Lists
The document discusses several sorting algorithms and their time complexities:
- Bubble sort, insertion sort, and selection sort have O(n^2) time complexity.
- Quicksort uses a divide-and-conquer approach and has O(n log n) time complexity on average but can be O(n^2) in the worst case.
- Heapsort uses a heap data structure and has O(n log n) time complexity.
The document discusses binary trees and their representations and operations. It defines binary trees as trees where each node has at most two child nodes. It also defines complete binary trees as trees where every node has two children except leaf nodes. The document discusses array and linked representations of binary trees and various traversal operations like preorder, inorder and postorder traversals. It also provides code snippets for inserting and deleting nodes from a binary tree.
This document discusses different searching methods like sequential, binary, and hashing. It defines searching as finding an element within a list. Sequential search searches lists sequentially until the element is found or the end is reached, with efficiency of O(n) in worst case. Binary search works on sorted arrays by eliminating half of remaining elements at each step, with efficiency of O(log n). Hashing maps keys to table positions using a hash function, allowing searches, inserts and deletes in O(1) time on average. Good hash functions uniformly distribute keys and generate different hashes for similar keys.
The document discusses various sorting algorithms including exchange sorts like bubble sort and quicksort, selection sorts like straight selection sort, and tree sorts like heap sort. For each algorithm, it provides an overview of the approach, pseudocode, analysis of time complexity, and examples. Key algorithms covered are bubble sort (O(n2)), quicksort (average O(n log n)), selection sort (O(n2)), and heap sort (O(n log n)).
This document discusses augmenting data structures by adding additional information and operations while maintaining efficiency. It describes augmenting red-black trees to support efficient retrieval of order statistics and ranks by adding a size field to nodes. Interval trees are also covered, which store intervals in a red-black tree sorted by low endpoint while maintaining the maximum endpoint in each subtree, enabling efficient search for overlapping intervals. The key to augmentation is showing the new information can be maintained through basic operations like insertion and deletion without affecting overall asymptotic runtime.
- A red-black tree is a self-balancing binary search tree where each node is colored red or black. It maintains the properties that the black height of each path is equal and there are no adjacent red nodes, ensuring O(log n) time for operations.
- Common operations like insertion, deletion, and searching on a red-black tree work similarly to a binary search tree but may require rotations and color changes to maintain the red-black properties.
- Red-black trees are widely used in applications that require efficient search structures for frequently updated data like process memory management and functional programming data structures.
The document provides an introduction to theory of computation and automata. It defines key concepts such as symbols, alphabets, strings, languages, finite automata, deterministic finite automata (DFA), non-deterministic finite automata (NFA). It explains these concepts using examples and discusses their representation using transition diagrams, transition tables, and examples of DFAs recognizing specific languages.
This document discusses stacks, which are non-linear data structures that follow the LIFO (last in, first out) principle. Stacks have operations like push and pop that insert and remove elements from the top of the stack. Pushing adds an element and increments the top pointer, while popping removes an element and decrements the top pointer. Stacks have applications in expression evaluation, memory management, and recursion. The document provides algorithms and code examples for implementing push and pop operations on a stack.
These slides are about Splay Tree .
From these slides u can learn Basics of splay tree by definition and its examples.At the end its Advantages And Disadvantages.
Introductiont To Aray,Tree,Stack, QueueGhaffar Khan
This document provides an introduction to data structures and algorithms. It defines key terminology related to data structures like entities, fields, records, files, and primary keys. It also describes common data structures like arrays, linked lists, stacks, queues, trees, and graphs. Finally, it discusses basic concepts in algorithms like control structures, complexity analysis, and examples of searching algorithms like linear search and binary search.
The document summarizes the disjoint-set data structure and algorithms for implementing union-find operations on disjoint sets. Key points:
- Disjoint sets allow representing partitions of elements into disjoint groups and supporting operations to merge groups and find the group a element belongs to.
- Several implementations are described, including linked lists and rooted trees (forests).
- The weighted-union heuristic improves the naive linked list implementation from O(n^2) to O(m log n) time by merging shorter lists into longer ones.
- In forests, union-by-rank and path compression heuristics combine sets in nearly linear time by balancing tree heights and flattening paths during finds.
Insertion sort works by iterating through an array, inserting each element into its sorted position by shifting other elements over. It finds the location where each element should be inserted into the sorted portion using a linear search, moving larger elements out of the way to make room. This sorting algorithm is most effective for small data sets and can be implemented recursively or iteratively through comparisons and shifts.
This document discusses splay trees, a type of self-balancing binary search tree where frequently accessed elements are moved closer to the root through rotations. Splay trees provide O(log n) time for search, insert, and delete operations while being simpler to implement than other self-balancing trees. When an element is accessed in a splay tree, it is "splayed" or rotated to the root through zig, zig-zig, or zig-zag steps depending on its position. Splay trees prioritize frequently accessed elements but may become unbalanced if all elements are accessed sequentially. The document provides examples of splaying tree rotations and constructs splay trees for two example sequences.
B-Trees are tree data structures used to store data on disk storage. They allow for efficient retrieval of data compared to binary trees when using disk storage due to reduced height. B-Trees group data into nodes that can have multiple children, reducing the height needed compared to binary trees. Keys are inserted by adding to leaf nodes or splitting nodes and promoting middle keys. Deletion involves removing from leaf nodes, borrowing/promoting keys, or joining nodes.
Prim's algorithm is used to find the minimum spanning tree of a connected, undirected graph. It works by continuously adding edges to a growing tree that connects vertices. The algorithm maintains two lists - a closed list of vertices already included in the minimum spanning tree, and a priority queue of open vertices. It starts with a single vertex in the closed list. Then it selects the lowest cost edge that connects an open vertex to a closed one, adds it to the tree and updates the lists. This process repeats until all vertices are in the closed list and connected by edges in the minimum spanning tree. The algorithm runs in O(E log V) time when using a binary heap priority queue.
Artificial Intelligence: Introduction, Typical Applications. State Space Search: Depth Bounded
DFS, Depth First Iterative Deepening. Heuristic Search: Heuristic Functions, Best First Search,
Hill Climbing, Variable Neighborhood Descent, Beam Search, Tabu Search. Optimal Search: A
*
algorithm, Iterative Deepening A*
, Recursive Best First Search, Pruning the CLOSED and OPEN
Lists
The document discusses several sorting algorithms and their time complexities:
- Bubble sort, insertion sort, and selection sort have O(n^2) time complexity.
- Quicksort uses a divide-and-conquer approach and has O(n log n) time complexity on average but can be O(n^2) in the worst case.
- Heapsort uses a heap data structure and has O(n log n) time complexity.
The document discusses binary trees and their representations and operations. It defines binary trees as trees where each node has at most two child nodes. It also defines complete binary trees as trees where every node has two children except leaf nodes. The document discusses array and linked representations of binary trees and various traversal operations like preorder, inorder and postorder traversals. It also provides code snippets for inserting and deleting nodes from a binary tree.
This document discusses different searching methods like sequential, binary, and hashing. It defines searching as finding an element within a list. Sequential search searches lists sequentially until the element is found or the end is reached, with efficiency of O(n) in worst case. Binary search works on sorted arrays by eliminating half of remaining elements at each step, with efficiency of O(log n). Hashing maps keys to table positions using a hash function, allowing searches, inserts and deletes in O(1) time on average. Good hash functions uniformly distribute keys and generate different hashes for similar keys.
The document discusses various sorting algorithms including exchange sorts like bubble sort and quicksort, selection sorts like straight selection sort, and tree sorts like heap sort. For each algorithm, it provides an overview of the approach, pseudocode, analysis of time complexity, and examples. Key algorithms covered are bubble sort (O(n2)), quicksort (average O(n log n)), selection sort (O(n2)), and heap sort (O(n log n)).
This document discusses augmenting data structures by adding additional information and operations while maintaining efficiency. It describes augmenting red-black trees to support efficient retrieval of order statistics and ranks by adding a size field to nodes. Interval trees are also covered, which store intervals in a red-black tree sorted by low endpoint while maintaining the maximum endpoint in each subtree, enabling efficient search for overlapping intervals. The key to augmentation is showing the new information can be maintained through basic operations like insertion and deletion without affecting overall asymptotic runtime.
The document discusses different types of tree traversals including preorder, inorder, postorder, and level order traversal. It provides examples of how to traverse a binary tree using each method and describes their visiting order. Additionally, it discusses applications of trees like binary search trees, expression trees, Huffman coding trees, and using trees to represent sets and perform union/find operations. The Huffman algorithm for data compression is explained in detail with an example.
The document discusses sorting algorithms. It defines sorting as arranging a list of records in a certain order based on their keys. Some key points made:
- Sorting is important as it enables efficient searching and other tasks. Common sorting algorithms include selection sort, insertion sort, mergesort, quicksort, and heapsort.
- The complexity of sorting in general is Θ(n log n) but some special cases allow linear time sorting. Internal sorting happens in memory while external sorting handles data too large for memory.
- Applications of sorting include searching, finding closest pairs of numbers, checking for duplicates, and calculating frequency distributions. Sorting also enables efficient algorithms for computing medians, convex hulls, and
This document outlines the syllabus for a course on data structures and algorithms using Java. It covers topics such as the role of algorithms and data structures, algorithm design techniques, types of data structures including primitive types, arrays, stacks, queues, linked lists, trees, graphs, and algorithm analysis. Specific algorithms and data structures discussed include sorting, searching, priority queues, stacks, queues, linked lists, trees, graphs, hashing, and complexity theory.
The document discusses data structures and algorithms. It begins by defining data structures as organized data and allowed operations. It then discusses arrays, linked lists, binary trees, and their implementations. Arrays allow fast access but fixed size, while linked lists and trees can grow dynamically but have slower access. Binary tree operations like search, insert, and delete have logarithmic time complexity due to the tree height being logarithmic in the number of nodes. The document provides examples of various data structure implementations and traversals.
This chapter discusses various data structures including elementary data structures like stacks, queues, linked lists, binary trees, and hash tables. It then describes more complex data structures like red-black trees that balance binary search trees to guarantee logarithmic time operations. It also discusses augmenting data structures by adding size fields to support dynamic order statistics queries in logarithmic time.
Data structure and algorithm using javaNarayan Sau
This presentation created for people who like to go back to basics of data structure and its implementation. This presentation mostly helps B.Tech , Bsc Computer science students as well as all programmer who wants to develop software in core areas.
Radix sort and merge sort are sorting algorithms. Radix sort sorts data with integer keys by grouping keys by the individual digits. It has linear time complexity and is very fast, but only works for integers. Merge sort divides an array in half recursively until the subarrays contain one element, then merges the subarrays back together in sorted order. It has time complexity of O(n log n) in all cases and is easy to implement, but requires additional space.
Splay trees are self-balancing binary search trees that provide fast access both in worst-case amortized time (O(log n)) and in practice due to their locality properties. When a node is accessed, it is rotated to the root through a series of zig-zag and zig-zig rotations, improving locality for future accesses. This helps frequently accessed nodes rise to the top of the tree over time. Splay trees also support efficient split and join operations through splaying, which makes them useful for tasks like range queries and dictionary operations.
This document discusses binary search trees and efficient binary trees. It begins by explaining what a binary search tree is and how it allows for efficient searching in O(log n) time. It then discusses how to create, search, insert, delete, determine the height and number of nodes in a binary search tree. The document also covers mirrored binary trees, threaded binary trees, and AVL trees, which are self-balancing binary search trees that ensure searching remains O(log n) time.
Trees are fundamental data structures that combine advantages of ordered arrays and linked lists. They consist of nodes connected by edges, where nodes often represent entities and edges represent relationships between nodes. Common tree operations include traversing to visit all nodes in order, searching for a node by its key, and inserting or deleting nodes. These operations have O(log N) time complexity where N is the number of nodes. Binary trees restrict each node to at most two children while Huffman trees are used to compress data by assigning variable-length binary codes to characters based on their frequency.
The document discusses various tree data structures used for dynamic sets, including their average-case performance. It begins by explaining that while binary search trees have worst-case Θ(h) time for operations, where h is the height, the average height for n random insertions is Θ(log n). It then introduces balanced search trees like red-black trees and 2-3 trees that guarantee Θ(log n) time for operations through rebalancing during insertions and deletions. The document provides examples and explanations of searching, insertion, and deletion algorithms for 2-3 trees.
This document provides an overview of different searching techniques including sequential search, binary search, tree searching using binary search trees, hashing techniques, and general search trees. It defines key search terminology and summarizes algorithms for common search operations like search, insertion and deletion in various data structures that support efficient searching like binary search trees, B-trees, and hash tables. Examples are provided to illustrate search techniques and how they work.
Phases of distributed query processingNevil Dsouza
The document discusses phases of distributed query processing. The objectives are to convert SQL queries to relational algebra, minimize costs by executing queries efficiently across distributed databases, and simplify queries. Analysis involves lexical, syntactic and semantic analysis to verify relations and attributes. Simplification detects redundant predicates. Query restructuring rewrites queries as relational algebra expressions and applies transformation rules. Fragmentation forms queries for fragmented relations and reduction techniques optimize queries based on the fragmentation type.
Binary search trees are binary trees where all left descendants of a node are less than the node's value and all right descendants are greater. This structure allows for efficient search, insertion, and deletion operations. The document provides definitions and examples of binary search tree properties and operations like creation, traversal, searching, insertion, deletion, and finding minimum and maximum values. Applications include dynamically maintaining a sorted dataset to enable efficient search, insertion, and deletion.
The document discusses binary search trees and their operations. It defines key concepts like nodes, leaves, root, and tree traversal methods. It then explains how to search, insert, find minimum/maximum elements, and traverse a binary search tree. Searching a BST involves recursively comparing the target key to node keys and traversing left or right. Insertion finds the appropriate position by moving pointers down the tree until reaching an empty node.
हिंदी वर्णमाला पीपीटी, hindi alphabet PPT presentation, hindi varnamala PPT, Hindi Varnamala pdf, हिंदी स्वर, हिंदी व्यंजन, sikhiye hindi varnmala, dr. mulla adam ali, hindi language and literature, hindi alphabet with drawing, hindi alphabet pdf, hindi varnamala for childrens, hindi language, hindi varnamala practice for kids, https://www.drmullaadamali.com
A Strategic Approach: GenAI in EducationPeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
ISO/IEC 27001, ISO/IEC 42001, and GDPR: Best Practices for Implementation and...PECB
Denis is a dynamic and results-driven Chief Information Officer (CIO) with a distinguished career spanning information systems analysis and technical project management. With a proven track record of spearheading the design and delivery of cutting-edge Information Management solutions, he has consistently elevated business operations, streamlined reporting functions, and maximized process efficiency.
Certified as an ISO/IEC 27001: Information Security Management Systems (ISMS) Lead Implementer, Data Protection Officer, and Cyber Risks Analyst, Denis brings a heightened focus on data security, privacy, and cyber resilience to every endeavor.
His expertise extends across a diverse spectrum of reporting, database, and web development applications, underpinned by an exceptional grasp of data storage and virtualization technologies. His proficiency in application testing, database administration, and data cleansing ensures seamless execution of complex projects.
What sets Denis apart is his comprehensive understanding of Business and Systems Analysis technologies, honed through involvement in all phases of the Software Development Lifecycle (SDLC). From meticulous requirements gathering to precise analysis, innovative design, rigorous development, thorough testing, and successful implementation, he has consistently delivered exceptional results.
Throughout his career, he has taken on multifaceted roles, from leading technical project management teams to owning solutions that drive operational excellence. His conscientious and proactive approach is unwavering, whether he is working independently or collaboratively within a team. His ability to connect with colleagues on a personal level underscores his commitment to fostering a harmonious and productive workplace environment.
Date: May 29, 2024
Tags: Information Security, ISO/IEC 27001, ISO/IEC 42001, Artificial Intelligence, GDPR
-------------------------------------------------------------------------------
Find out more about ISO training and certification services
Training: ISO/IEC 27001 Information Security Management System - EN | PECB
ISO/IEC 42001 Artificial Intelligence Management System - EN | PECB
General Data Protection Regulation (GDPR) - Training Courses - EN | PECB
Webinars: https://pecb.com/webinars
Article: https://pecb.com/article
-------------------------------------------------------------------------------
For more information about PECB:
Website: https://pecb.com/
LinkedIn: https://www.linkedin.com/company/pecb/
Facebook: https://www.facebook.com/PECBInternational/
Slideshare: http://www.slideshare.net/PECBCERTIFICATION
This slide is special for master students (MIBS & MIFB) in UUM. Also useful for readers who are interested in the topic of contemporary Islamic banking.
Executive Directors Chat Leveraging AI for Diversity, Equity, and InclusionTechSoup
Let’s explore the intersection of technology and equity in the final session of our DEI series. Discover how AI tools, like ChatGPT, can be used to support and enhance your nonprofit's DEI initiatives. Participants will gain insights into practical AI applications and get tips for leveraging technology to advance their DEI goals.
Strategies for Effective Upskilling is a presentation by Chinwendu Peace in a Your Skill Boost Masterclass organisation by the Excellence Foundation for South Sudan on 08th and 09th June 2024 from 1 PM to 3 PM on each day.
This presentation includes basic of PCOS their pathology and treatment and also Ayurveda correlation of PCOS and Ayurvedic line of treatment mentioned in classics.
How to Build a Module in Odoo 17 Using the Scaffold MethodCeline George
Odoo provides an option for creating a module by using a single line command. By using this command the user can make a whole structure of a module. It is very easy for a beginner to make a module. There is no need to make each file manually. This slide will show how to create a module using the scaffold method.
A workshop hosted by the South African Journal of Science aimed at postgraduate students and early career researchers with little or no experience in writing and publishing journal articles.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
1. SPLAY TREE
By,
Ambooj Yadav, Anam Iqbal & Hina Firdaus
M.Tech CSE Ist year, Ist Semester
Advance Datastructure Algorithm and Analysis
Jamia Hamdard University, New Delhi-62
2. Introduction
Definition:-
• Splay trees another variation of the binary search tree, invented by Robert
Tarjan and Daniel Sleator.
• Splay means “to rearrange, so that the desired element is placed at the
root"
• Splay trees support all the operations of binary trees.
• A splay tree is a self-adjusting binary search tree
Novel characteristics
• It performs basic operations such as insertion, look-up and removal.
• Does not require any accounting information (color, level, height, etc.)
• Worst case for any single operation: O(N)
• Average case for all operation: O(log N)
• Frequently-accessed keys are moved up so that they are near the root.
• Easier to perform comparison with 2-3-4 trees.
3.
4. General question
1. What is difference between AVL trees and
splay trees?
2. On what basis do we select these tress?
3. What are positive's and negative's of these
trees?
4. What are the performances of these trees in
terms of big O notation?
5. 1. What is difference between AVL
trees and splay trees?
Splay trees always try to be
balanced after every operation.
Because of this rest operation
take less time to perform
They are cool…
6. 2. On what basis do we select these
tress?
• Splay trees are always better than binary search trees
when, your application deals with a lot of data in the
tree but, will need access to a subset of the data very
frequently than others.
• In this case the data you access frequently will come
near the root as a result of the splay.
• Because of this, any node can then be accessed with
less time than before.
7. 3. What are positive's and negative's of
these trees?
Positive Negative
• Positives for both is that you
get around log(n) in both these
data structures theoretically.
• Splay trees have average log(n)
over a number of operations.
• Getting n times complexity for
an operation in a set, but it can
be compensated while
accessing frequent items.
• In binary search tree, you
need to be lucky to have log(n)
always.
• If the keys are not random,
then the tree will reduce to a
list like form with only one
side.
8. 4. What are the performances of these
trees in terms of big O notation?
• AVL tree insertion, deletion, and lookups take
O(log n) time for each.
• Splay tree do take same time in amortized sense.
• Any long sequence of operations will take at
most O(n log n) time, but individual operations
might take as much as O(n) time in splay trees.
9. Splay tree
• Two varieties to approach splay trees are :-
▫ Bottom up : first search the tree and rotate at same
iteration.
▫ Top down: first search the tree and rotate in another
iteration
• There are three case :-
1) ZIG
2) ZIG-ZAG (Bottom-up approach)
3) ZIG-ZIG (Top-down approach)
10. Case 1: ZIG
• When p is the root.
• The tree is rotated on the edge between x and p.
• We rotate x over y, making x’s children be the node y and one
of x’s former children u, so as to maintain the relative inorder
relationships of the nodes in tree T.
11. Case 2: Zig-Zag
• Left-right or right-left
• The order of rotations: bottom-up approach, which
guarantees that the tree height is reduced by one at each zig-zag
rotation.
• The tree is rotated on the edge between p and x, and then rotated
on the resulting edge between x and g.
12. Case 3: Zig-Zig
• Left–left or right–right
• The order of rotations: top-down, which guarantees that the
distance to every node encountered (except the root) is reduced to
half.
• When p is not the root and x and p are either both right children or
are both left children.
• The tree is rotated on the edge joining p with its parent g, then
rotated on the edge joining x with p.
13. Insertion
• To insert a value x into a splay tree:
▫ Insert x as with a normal binary search tree.
▫ when an item is inserted, a splay is performed.
▫ As a result, the newly inserted node x becomes the root of the tree.
• Algorithm:
insert(node) {
1. Insert the new node.
2. Let n be the length of the path traversed for the insertion. Then,
a. If n = 2m (i.e., even number) then perform m double rotations.
b. If n = 2m+1 (i.e., odd number) then perform one single rotation followed
by m double rotations.
}
15. Deletion
Delete x
Splay x to root and remove it. (note: the node does not have
to be a leaf or single child node like in BST delete.) Two
trees remain, right subtree and left subtree.
Splay the max in the left subtree to the root
Attach the right subtree to the new root of the left subtree.
Delete(x, T):
∗ Splay(x, T) and remove root → tree falls into T1 and T2.
∗ Splay(x, T1)
∗ Make T2 right son of new root of T1 after splay
21. SEARCH
• The search operation in splay trees does the standard BINARY
SEARCH TREE SEARCH.
• In addition to that it SPLAYS.
• Splay trees are very effective search trees relatively simple:
1. No extra fields required
2. Excellent locality properties:
• frequently accessed keys are cheap to find (near top of tree)
• infrequently accessed keys stay out of the way (near
bottom of tree)
22. Rules of splaying: Search
• If the search is successful, then the node that is found is splayed and becomes
the new root.
• If the search is unsuccessful, the last node accessed prior to reaching the
NULL pointer is splayed and becomes the new root.
Search (i, t)
If item i is in tree t, return a pointer to the node containing i; otherwise return a
pointer to the null node.
• Search down the root of t, looking for i.
• If the search is successful and we reach a node x containing i, we complete
the search by splaying at x and returning a pointer to x.
• If the search is unsuccessful, i.e., we reach the null node, we splay at the last
non-null node reached during the search and return a pointer to null.
• If the tree is empty, we omit any splaying operation.
30. AMORTIZED ANALYSIS
• Amortized analysis is a technique for analyzing an algorithm's running time.
• It is often appropriate when one is interested in understanding asymptotic behavior
over sequences of operations.
• For example, one might be interested in reasoning about the running time for an ar
bitrary operation to insert an item into a binary search tree structure. In cases such
as this, it might be straightforward to come up with an upper bound by say,
finding the worst-possible time required for any operation, them multiplying this by
the number of operations in the sequence.
• However, many real data structures, such as splay trees, have the property that it is
impossible for every operation in a sequence to take the worst case time, so
this approach can result in a horribly pessimistic bound!
31. • Amortized analysis allows a tighter bound that better reflects performance.
• It does not say anything about the cost of a specific operation in that sequence.
• Amortized analysis is concerned with the overall cost of arbitrary sequences.
• An amortized bound will hold regardless of the specific sequence; for example, if th
e amortized cost of insertion is O(log n), it is so regardless of whether you insert
the sequence '10,' '160,' '2' or the sequence '2', '160', '10,' '399', etc.
• An amortized bound says nothing about the cost of individual operations, it may
be possible that one operation in the sequence requires a huge cost.
• Practical systems in which it is important that all operations have low and/or
comparable costs may require an algorithm with a worse amortized cost but a better
worst case per operation bound.
32. • Amortized analysis can be understood to take advantage of the fact that some
expensive operations may “pay” for future operations by somehow limiting the
number or cost of expensive operations that can happen in the near future.
• If good amortized cost is a goal, an algorithm may be designed to explicitly perform
this “clean up” during expensive operations!
• The key to performing amortized analysis is picking a good “credit” or “potential
function” that captures how operations with different actual costs affect a data
structure and allows the desired bound to be shown.
33. AMORTISED ANALYSIS OF
SPLAY TREES
• Let S(x) denote subtree of S
rooted at x.
• |S| = number of nodes in tree S.
• µ(S) = rank = floor(log |S|).
• P(i) = ∑tree node x rank(x).
• P(i) is potential after i’th
operation.
• rank(x) is computed after i’th
operation.
• P(0) = 0
• Potential=10
2
1 8
4
3 6
5 7
10
9
|S| = 10
µ(2) = 3
µ(8) = 3
µ(4) = 2
µ(6) = 1
µ(5) = 0
34. CASE 1: If q = null or q is the root
do nothing (splay is over).
∆P = 0
amortized cost = actual cost + ∆P = 0.
CASE 2: If q is at level 2
do a one-level move and terminate the splay
operation.
r(x) = rank of x before splay step.
r'(x) = rank of x after splay step.
35. ∆P = r'(p) + r'(q) − r(p) − r(q) ≤ r'(q) − r(q)
amortized cost = actual cost + ∆P ≤ 1+ r'(q) − r(q)
p
q
ba
c
q
cb
a p
Potential
36. s
p
q
d
a b
c
q
a
s
p
c d
b
r'(q) = r(s)
r'(s) ≤ r’(q)
r’(p) ≤ r’(q)
r(q) ≤ r(p)
∆P = r’(s) +r’(p) +r’(q)−r(s)−r(p)−r(q) ≤ r'(q) + r'(q) − r(q) − r(q) =
2(r'(q)−r(q))
2(r'(q)−r(q)) ≤ 3(r'(q)−r(q))−1
amortized cost = actual cost + ∆P ≤ 1+3(r'(q)−r(q))−1 = 3(r'(q)−r(q))
CASE 3: If q is at level 3
37. Putting it together
We repeat the steps until X replaces the root R
• zig only happens once, so the 1 is only added once/
• Each time, the last Rf(X) is cancelled by the next –Ri(X)
The only terms left are: AT(total) <= 1 + 3*[Rroot(X) – Rinitial(X)]
Rinitial(X) could be as low as 0, Rroot(X) as high as log N •
Thus, total budget for whole sequence is O(log N)
OPERATION COST
AT(zig) < = 1+ ∆R(X) <= 1 + 3 [Rf(X) –
Ri(X)]
AT(zig-zag) <= 2 ∆R(X) <= 3 [Rf(X) –
Ri(X)]
AT(zig-zig) <= 3 ∆R(X) <= 3 [Rf(X) –
Ri(X)]