![]() |
Welcome to Loot.co.za!
Sign in / Register |Wishlists & Gift Vouchers |Help | Advanced search
|
Your cart is empty |
||
|
Books > Computing & IT > General theory of computing > Data structures
Winner of a 2015 Alpha Sigma Nu Book Award, Software Essentials: Design and Construction explicitly defines and illustrates the basic elements of software design and construction, providing a solid understanding of control flow, abstract data types (ADTs), memory, type relationships, and dynamic behavior. This text evaluates the benefits and overhead of object-oriented design (OOD) and analyzes software design options. With a structured but hands-on approach, the book: Delineates malleable and stable characteristics of software design Explains how to evaluate the short- and long-term costs and benefits of design decisions Compares and contrasts design solutions, such as composition versus inheritance Includes supportive appendices and a glossary of over 200 common terms Covers key topics such as polymorphism, overloading, and more While extensive examples are given in C# and/or C++, often demonstrating alternative solutions, design-not syntax-remains the focal point of Software Essentials: Design and Construction. About the Cover: Although capacity may be a problem for a doghouse, other requirements are usually minimal. Unlike skyscrapers, doghouses are simple units. They do not require plumbing, electricity, fire alarms, elevators, or ventilation systems, and they do not need to be built to code or pass inspections. The range of complexity in software design is similar. Given available software tools and libraries-many of which are free-hobbyists can build small or short-lived computer apps. Yet, design for software longevity, security, and efficiency can be intricate-as is the design of large-scale systems. How can a software developer prepare to manage such complexity? By understanding the essential building blocks of software design and construction.
Solve real-life programming problems with a fraction of the code that pure object-oriented programming requires. Use Scala and Clojure to solve in-depth problems with two sets of patterns: object-oriented patterns that become more concise with functional programming, and natively functional patterns. Your code will be more declarative, with fewer bugs and lower maintenance costs. Functional languages have their own patterns that enable you to solve problems with less code than object-oriented programming alone. This book introduces you, the experienced Java programmer, to Scala and Clojure: practical, production-quality languages that run on the JVM and interoperate with existing Java. By using both the statically typed, type-inferred Scala and the dynamically typed, modern Lisp Clojure, you'll gain a broad understanding of functional programming. For each pattern, you'll first see the traditional object-oriented solution, and then dig into the functional replacements in both Scala and Clojure. These patterns are common in the functional world and deserve to become part of your problem-solving toolkit. On the object-oriented side, you'll see many common patterns, such as Command, Strategy, and Null Object. On the functional side, you'll learn core functional patterns such as Memoization, Lazy Sequence, and Tail Recursion. Each pattern helps you solve a common programming problem. Working through them gives you a set of patterns you can use to solve problems you come across while writing programs. Finally, you'll learn how to work your existing Java code into new Scala or Clojure projects. You can start off small, adding functional code little by little, so you can complement your existing knowledge with Scala and Clojure as these languages gain popularity on the JVM.
Handbook of Approximation Algorithms and Metaheuristics, Second Edition reflects the tremendous growth in the field, over the past two decades. Through contributions from leading experts, this handbook provides a comprehensive introduction to the underlying theory and methodologies, as well as the various applications of approximation algorithms and metaheuristics. Volume 1 of this two-volume set deals primarily with methodologies and traditional applications. It includes restriction, relaxation, local ratio, approximation schemes, randomization, tabu search, evolutionary computation, local search, neural networks, and other metaheuristics. It also explores multi-objective optimization, reoptimization, sensitivity analysis, and stability. Traditional applications covered include: bin packing, multi-dimensional packing, Steiner trees, traveling salesperson, scheduling, and related problems. Volume 2 focuses on the contemporary and emerging applications of methodologies to problems in combinatorial optimization, computational geometry and graphs problems, as well as in large-scale and emerging application areas. It includes approximation algorithms and heuristics for clustering, networks (sensor and wireless), communication, bioinformatics search, streams, virtual communities, and more. About the Editor Teofilo F. Gonzalez is a professor emeritus of computer science at the University of California, Santa Barbara. He completed his Ph.D. in 1975 from the University of Minnesota. He taught at the University of Oklahoma, the Pennsylvania State University, and the University of Texas at Dallas, before joining the UCSB computer science faculty in 1984. He spent sabbatical leaves at the Monterrey Institute of Technology and Higher Education and Utrecht University. He is known for his highly cited pioneering research in the hardness of approximation; for his sublinear and best possible approximation algorithm for k-tMM clustering; for introducing the open-shop scheduling problem as well as algorithms for its solution that have found applications in numerous research areas; as well as for his research on problems in the areas of scheduling, graph, computational geometry, communication, routing, etc.
New perspective technologies of genetic search and evolution simulation represent the kernel of this book. The authors wanted to show how these technologies are used for practical problems solution. This monograph is devoted to specialists of CAD, intellectual information technologies in science, biology, economics, sociology and others. It may be used by post-graduate students and students of specialties connected to the systems theory and system analysis methods, information science, optimization methods, operations investigation and solution-making.
Swarm intelligence algorithms are a form of nature-based optimization algorithms. Their main inspiration is the cooperative behavior of animals within specific communities. This can be described as simple behaviors of individuals along with the mechanisms for sharing knowledge between them, resulting in the complex behavior of the entire community. Examples of such behavior can be found in ant colonies, bee swarms, schools of fish or bird flocks. Swarm intelligence algorithms are used to solve difficult optimization problems for which there are no exact solving methods or the use of such methods is impossible, e.g. due to unacceptable computational time. This book thoroughly presents the basics of 24 algorithms selected from the entire family of swarm intelligence algorithms. Each chapter deals with a different algorithm describing it in detail and showing how it works in the form of a pseudo-code. In addition, the source code is provided for each algorithm in Matlab and in the C ++ programming language. In order to better understand how each swarm intelligence algorithm works, a simple numerical example is included in each chapter, which guides the reader step by step through the individual stages of the algorithm, showing all necessary calculations. This book can provide the basics for understanding how swarm intelligence algorithms work, and aid readers in programming these algorithms on their own to solve various computational problems. This book should also be useful for undergraduate and postgraduate students studying nature-based optimization algorithms, and can be a helpful tool for learning the basics of these algorithms efficiently and quickly. In addition, it can be a useful source of knowledge for scientists working in the field of artificial intelligence, as well as for engineers interested in using this type of algorithms in their work. If the reader already has basic knowledge of swarm intelligence algorithms, we recommend the book: "Swarm Intelligence Algorithms: Modifications and Applications" (Edited by A. Slowik, CRC Press, 2020), which describes selected modifications of these algorithms and presents their practical applications.
Swarm intelligence algorithms are a form of nature-based optimization algorithms. Their main inspiration is the cooperative behavior of animals within specific communities. This can be described as simple behaviors of individuals along with the mechanisms for sharing knowledge between them, resulting in the complex behavior of the entire community. Examples of such behavior can be found in ant colonies, bee swarms, schools of fish or bird flocks. Swarm intelligence algorithms are used to solve difficult optimization problems for which there are no exact solving methods or the use of such methods is impossible, e.g. due to unacceptable computational time. This set comprises two volumes: Swarm Intelligence Algorithms: A Tutorial and Swarm Intelligence Algorithms: Modifications and Applications. The first volume thoroughly presents the basics of 24 algorithms selected from the entire family of swarm intelligence algorithms. It contains a detailed explanation of how each algorithm works, along with relevant program codes in Matlab and the C ++ programming language, as well as numerical examples illustrating step-by-step how individual algorithms work. The second volume describes selected modifications of these algorithms and presents their practical applications. This book presents 24 swarm algorithms together with their modifications and practical applications. Each chapter is devoted to one algorithm. It contains a short description along with a pseudo-code showing the various stages of its operation. In addition, each chapter contains a description of selected modifications of the algorithm and shows how it can be used to solve a selected practical problem.
Algorithms for Automating Open Source Intelligence (OSINT) presents information on the gathering of information and extraction of actionable intelligence from openly available sources, including news broadcasts, public repositories, and more recently, social media. As OSINT has applications in crime fighting, state-based intelligence, and social research, this book provides recent advances in text mining, web crawling, and other algorithms that have led to advances in methods that can largely automate this process. The book is beneficial to both practitioners and academic researchers, with discussions of the latest advances in applications, a coherent set of methods and processes for automating OSINT, and interdisciplinary perspectives on the key problems identified within each discipline. Drawing upon years of practical experience and using numerous examples, editors Robert Layton, Paul Watters, and a distinguished list of contributors discuss Evidence Accumulation Strategies for OSINT, Named Entity Resolution in Social Media, Analyzing Social Media Campaigns for Group Size Estimation, Surveys and qualitative techniques in OSINT, and Geospatial reasoning of open data.
The book presents the important fundamental theorems and algorithms on planar graph drawing with easy-to-understand and constructive proofs. Extensively illustrated and with exercises included at the end of each chapter, it is suitable for use in advanced undergraduate and graduate level courses on algorithms, graph theory, graph drawing, information visualization and computational geometry. The book will also serve as a useful reference source for researchers in the field of graph drawing and software developers in information visualization, VLSI design and CAD.
Stochastic global optimization methods and applications to chemical, biochemical, pharmaceutical and environmental processes presents various algorithms that include the genetic algorithm, simulated annealing, differential evolution, ant colony optimization, tabu search, particle swarm optimization, artificial bee colony optimization, and cuckoo search algorithm. The design and analysis of these algorithms is studied by applying them to solve various base case and complex optimization problems concerning chemical, biochemical, pharmaceutical, and environmental engineering processes. Design and implementation of various classical and advanced optimization strategies to solve a wide variety of optimization problems makes this book beneficial to graduate students, researchers, and practicing engineers working in multiple domains. This book mainly focuses on stochastic, evolutionary, and artificial intelligence optimization algorithms with a special emphasis on their design, analysis, and implementation to solve complex optimization problems and includes a number of real applications concerning chemical, biochemical, pharmaceutical, and environmental engineering processes.
Computer simulations based on mathematical models have become ubiquitous across the engineering disciplines and throughout the physical sciences. Successful use of a simulation model, however, requires careful interrogation of the model through systematic computer experiments. While specific theoretical/mathematical examinations of computer experiment design are available, those interested in applying proposed methodologies need a practical presentation and straightforward guidance on analyzing and interpreting experiment results. Written by authors with strong academic reputations and real-world practical experience, Design and Modeling for Computer Experiments is exactly the kind of treatment you need. The authors blend a sound, modern statistical approach with extensive engineering applications and clearly delineate the steps required to successfully model a problem and provide an analysis that will help find the solution. Part I introduces the design and modeling of computer experiments and the basic concepts used throughout the book. Part II focuses on the design of computer experiments. The authors present the most popular space-filling designs - like Latin hypercube sampling and its modifications and uniform design - including their definitions, properties, construction and related generating algorithms. Part III discusses the modeling of data from computer experiments. Here the authors present various modeling techniques and discuss model interpretation, including sensitivity analysis. An appendix reviews the statistics and mathematics concepts needed, and numerous examples clarify the techniques and their implementation. The complexity of real physical systems means that there is usually no simple analytic formula that sufficiently describes the phenomena. Useful both as a textbook and professional reference, this book presents the techniques you need to design and model computer experiments for practical problem solving.
Solving complex optimization problems with parallel metaheuristics
This book presents the first "How To" guide to the use of radial basis functions (RBF). It provides a clear vision of their potential, an overview of ready-for-use computational tools and precise guidelines to implement new engineering applications of RBF. Radial basis functions (RBF) are a mathematical tool mature enough for useful engineering applications. Their mathematical foundation is well established and the tool has proven to be effective in many fields, as the mathematical framework can be adapted in several ways. A candidate application can be faced considering the features of RBF: multidimensional space (including 2D and 3D), numerous radial functions available, global and compact support, interpolation/regression. This great flexibility makes RBF attractive - and their great potential has only been partially discovered. This is because of the difficulty in taking a first step toward RBF as they are not commonly part of engineers' cultural background, but also due to the numerical complexity of RBF problems that scales up very quickly with the number of RBF centers. Fast RBF algorithms are available to alleviate this and high-performance computing (HPC) can provide further aid. Nevertheless, a consolidated tradition in using RBF in engineering applications is still missing and the beginner can be confused by the literature, which in many cases is presented with language and symbolisms familiar to mathematicians but which can be cryptic for engineers. The book is divided in two main sections. The first covers the foundations of RBF, the tools available for their quick implementation and guidelines for facing new challenges; the second part is a collection of practical RBF applications in engineering, covering several topics, including response surface interpolation in n-dimensional spaces, mapping of magnetic loads, mapping of pressure loads, up-scaling of flow fields, stress/strain analysis by experimental displacement fields, implicit surfaces, mesh to cad deformation, mesh morphing for crack propagation in 3D, ice and snow accretion using computational fluid dynamics (CFD) data, shape optimization for external aerodynamics, and use of adjoint data for surface sculpting. For each application, the complete path is clearly and consistently exposed using the systematic approach defined in the first section.
This book helps readers create good VHDL descriptions and simulate VHDL designs. It teaches VHDL using selected sample problems, which are solved step by step and with precise explanations, so that readers get a clear idea of what a good VHDL code should look like. The book is divided into eight chapters, covering aspects ranging from the very basics of VHDL syntax and the module concept, to VHDL logic circuit implementations. In the first chapter, the entity and architecture parts of a VHDL program are explained in detail. The second chapter explains the implementations of combinational logic circuits in VHDL language, while the following chapters offer information on the simulation of VHDL programs and demonstrate how to define data types other than the standard ones available in VHDL libraries. In turn, the fifth chapter explains the implementation of clocked sequential logic circuits, and the sixth shows the implementation of registers and counter packages. The book's last two chapters detail how components, functions and procedures, as well as floating-point numbers, are implemented in VHDL. The book offers extensive exercises at the end of each chapter, inviting readers to learn VHDL by doing it and writing good code.
The term "stringology" is a popular nickname for text algorithms, or algorithms on strings. This book deals with the most basic algorithms in the area. Most of them can be viewed as "algorithmic jewels" and deserve reader-friendly presentation. One of the main aims of the book is to present several of the most celebrated algorithms in a simple way by omitting obscuring details and separating algorithmic structure from combinatorial theoretical background. The book reflects the relationships between applications of text-algorithmic techniques and the classification of algorithms according to the measures of complexity considered. The text can be viewed as a parade of algorithms in which the main purpose is to discuss the foundations of the algorithms and their interconnections. One can partition the algorithmic problems discussed into practical and theoretical problems. Certainly, string matching and data compression are in the former class, while most problems related to symmetries and repetitions in texts are in the latter. However, all the problems are interesting from an algorithmic point of view and enable the reader to appreciate the importance of combinatorics on words as a tool in the design of efficient text algorithms.In most textbooks on algorithms and data structures, the presentation of efficient algorithms on words is quite short as compared to issues in graph theory, sorting, searching, and some other areas. At the same time, there are many presentations of interesting algorithms on words accessible only in journals and in a form directed mainly at specialists. This book fills the gap in the book literature on algorithms on words, and brings together the many results presently dispersed in the masses of journal articles. The presentation is reader-friendly; many examples and about two hundred figures illustrate nicely the behaviour of otherwise very complex algorithms.
This is the third of three volumes providing a comprehensive presentation of the fundamentals of scientific computing. This volume discusses topics that depend more on calculus than linear algebra, in order to prepare the reader for solving differential equations. This book and its companions show how to determine the quality of computational results, and how to measure the relative efficiency of competing methods. Readers learn how to determine the maximum attainable accuracy of algorithms, and how to select the best method for computing problems. This book also discusses programming in several languages, including C++, Fortran and MATLAB. There are 90 examples, 200 exercises, 36 algorithms, 40 interactive JavaScript programs, 91 references to software programs and 1 case study. Topics are introduced with goals, literature references and links to public software. There are descriptions of the current algorithms in GSLIB and MATLAB. This book could be used for a second course in numerical methods, for either upper level undergraduates or first year graduate students. Parts of the text could be used for specialized courses, such as nonlinear optimization or iterative linear algebra.
A friendly introduction to the most useful algorithms written in simple, intuitive English The revised and updated second edition of Essential Algorithms, offers an accessible introduction to computer algorithms. The book contains a description of important classical algorithms and explains when each is appropriate. The author shows how to analyze algorithms in order to understand their behavior and teaches techniques that the can be used to create new algorithms to meet future needs. The text includes useful algorithms such as: methods for manipulating common data structures, advanced data structures, network algorithms, and numerical algorithms. It also offers a variety of general problem-solving techniques. In addition to describing algorithms and approaches, the author offers details on how to analyze the performance of algorithms. The book is filled with exercises that can be used to explore ways to modify the algorithms in order to apply them to new situations. This updated edition of Essential Algorithms Contains explanations of algorithms in simple terms, rather than complicated math Steps through powerful algorithms that can be used to solve difficult programming problems Helps prepare for programming job interviews that typically include algorithmic questions Offers methods can be applied to any programming language Includes exercises and solutions useful to both professionals and students Provides code examples updated and written in Python and C# Essential Algorithms has been updated and revised and offers professionals and students a hands-on guide to analyzing algorithms as well as the techniques and applications. The book also includes a collection of questions that may appear in a job interview. The book's website will include reference implementations in Python and C# (which can be easily applied to Java and C++).
Over the past 20 years, the emergence of clone theory, hyperequational theory, commutator theory and tame congruence theory has led to a growth of universal algebra both in richness and in applications, especially in computer science. Yet most of the classic books on the subject are long out of print and, to date, no other book has integrated these theories with the long-established work that supports them.
The conventional wisdom was that biology influenced mathematics and computer science. But a new approach has taken hold: that of transferring methods and tools from computer science to biology. The reverse trend is evident in Grammars and Automata for String Processing: From Mathematics and Computer Science to Biology and Back. The contributors address the structural (syntactical) view of the domain. Mathematical linguistics and computer science can offer various tools for modeling complex macromolecules and for analyzing and simulating biological issues. This collection is valuable for students and researchers in biology, computer science, and applied mathematics.
Self-driving cars, natural language recognition, and online recommendation engines are all possible thanks to Machine Learning. Now you can create your own genetic algorithms, nature-inspired swarms, Monte Carlo simulations, cellular automata, and clusters. Learn how to test your ML code and dive into even more advanced topics. If you are a beginner-to-intermediate programmer keen to understand machine learning, this book is for you. Discover machine learning algorithms using a handful of self-contained recipes. Build a repertoire of algorithms, discovering terms and approaches that apply generally. Bake intelligence into your algorithms, guiding them to discover good solutions to problems. In this book, you will: Use heuristics and design fitness functions. Build genetic algorithms. Make nature-inspired swarms with ants, bees and particles. Create Monte Carlo simulations. Investigate cellular automata. Find minima and maxima, using hill climbing and simulated annealing. Try selection methods, including tournament and roulette wheels. Learn about heuristics, fitness functions, metrics, and clusters. Test your code and get inspired to try new problems. Work through scenarios to code your way out of a paper bag; an important skill for any competent programmer. See how the algorithms explore and learn by creating visualizations of each problem. Get inspired to design your own machine learning projects and become familiar with the jargon. What You Need: Code in C++ (>= C++11), Python (2.x or 3.x) and JavaScript (using the HTML5 canvas). Also uses matplotlib and some open source libraries, including SFML, Catch and Cosmic-Ray. These plotting and testing libraries are not required but their use will give you a fuller experience. Armed with just a text editor and compiler/interpreter for your language of choice you can still code along from the general algorithm descriptions.
Algorithms and Theory of Computation Handbook, Second Edition: Special Topics and Techniques provides an up-to-date compendium of fundamental computer science topics and techniques. It also illustrates how the topics and techniques come together to deliver efficient solutions to important practical problems. Along with updating and revising many of the existing chapters, this second edition contains more than 15 new chapters. This edition now covers self-stabilizing and pricing algorithms as well as the theories of privacy and anonymity, databases, computational games, and communication networks. It also discusses computational topology, natural language processing, and grid computing and explores applications in intensity-modulated radiation therapy, voting, DNA research, systems biology, and financial derivatives. This best-selling handbook continues to help computer professionals and engineers find significant information on various algorithmic topics. The expert contributors clearly define the terminology, present basic results and techniques, and offer a number of current references to the in-depth literature. They also provide a glimpse of the major research issues concerning the relevant topics.
Shadow Algorithms Data Miner provides a high-level understanding of the complete set of shadow concepts and algorithms, addressing their usefulness from a larger graphics system perspective. It discusses the applicability and limitations of all the direct illumination approaches for shadow generation. With an emphasis on shadow fundamentals, the book gives an organized picture of the motivations, complexities, and categorized algorithms available to generate digital shadows. It helps readers select the most relevant algorithms for their needs by placing the shadow algorithms in real-world contexts and looking at them from a larger graphics system perspective. As a result, readers know where to start for their application needs, which algorithms to begin considering, and which papers and supplemental material should be consulted for further details.
A Thorough Overview of the Next Generation in Computing Poised to follow in the footsteps of the Internet, grid computing is on the verge of becoming more robust and accessible to the public in the near future. Focusing on this novel, yet already powerful, technology, Introduction to Grid Computing explores state-of-the-art grid projects, core grid technologies, and applications of the grid. After comparing the grid with other distributed systems, the book covers two important aspects of a grid system: scheduling of jobs and resource discovery and monitoring in grid. It then discusses existing and emerging security technologies, such as WS-Security and OGSA security, as well as the functions of grid middleware at a conceptual level. The authors also describe famous grid projects, demonstrate the pricing of European options through the use of the Monte Carlo method on grids, and highlight different parallelization possibilities on the grid. Taking a tutorial approach, this concise book provides a complete introduction to the components of the grid architecture and applications of grid computing. It expertly shows how grid computing can be used in various areas, from computational mechanics to risk management in financial institutions.
Designed for use in a second course on linear algebra, Matrix Theory and Applications with MATLAB covers the basics of the subject-from a review of matrix algebra through vector spaces to matrix calculus and unitary similarity-in a presentation that stresses insight, understanding, and applications. Among its most outstanding features is the integration of MATLAB throughout the text. Each chapter includes a MATLAB subsection that discusses the various commands used to do the computations in that section and offers code for the graphics and some algorithms used in the text.
Evolutionary Computation 2: Advanced Algorithms and Operators expands upon the basic ideas underlying evolutionary algorithms. The focus is on fitness evaluation, constraint-handling techniques, population structures, advanced techniques in evolutionary computation, and the implementation of evolutionary algorithms. It is intended to be used by individual researchers and students in the expanding field of evolutionary computation.
In the last few years, Algorithms for Convex Optimization have revolutionized algorithm design, both for discrete and continuous optimization problems. For problems like maximum flow, maximum matching, and submodular function minimization, the fastest algorithms involve essential methods such as gradient descent, mirror descent, interior point methods, and ellipsoid methods. The goal of this self-contained book is to enable researchers and professionals in computer science, data science, and machine learning to gain an in-depth understanding of these algorithms. The text emphasizes how to derive key algorithms for convex optimization from first principles and how to establish precise running time bounds. This modern text explains the success of these algorithms in problems of discrete optimization, as well as how these methods have significantly pushed the state of the art of convex optimization itself. |
You may like...
BTEC Nationals Information Technology…
Jenny Phillips, Alan Jarvis, …
Paperback
R1,018
Discovery Miles 10 180
|